{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Sentiment Classification & How To \"Frame Problems\" for a Neural Network\n",
    "\n",
    "by Andrew Trask\n",
    "\n",
    "- **Twitter**: @iamtrask\n",
    "- **Blog**: http://iamtrask.github.io"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### What You Should Already Know\n",
    "\n",
    "- neural networks, forward and back-propagation\n",
    "- stochastic gradient descent\n",
    "- mean squared error\n",
    "- and train/test splits\n",
    "\n",
    "### Where to Get Help if You Need it\n",
    "- Re-watch previous Udacity Lectures\n",
    "- Leverage the recommended Course Reading Material - [Grokking Deep Learning](https://www.manning.com/books/grokking-deep-learning) (Check inside your classroom for a discount code)\n",
    "- Shoot me a tweet @iamtrask\n",
    "\n",
    "\n",
    "### Tutorial Outline:\n",
    "\n",
    "- Intro: The Importance of \"Framing a Problem\" (this lesson)\n",
    "\n",
    "- [Curate a Dataset](#lesson_1)\n",
    "- [Developing a \"Predictive Theory\"](#lesson_2)\n",
    "- [**PROJECT 1**: Quick Theory Validation](#project_1)\n",
    "\n",
    "\n",
    "- [Transforming Text to Numbers](#lesson_3)\n",
    "- [**PROJECT 2**: Creating the Input/Output Data](#project_2)\n",
    "\n",
    "\n",
    "- Putting it all together in a Neural Network (video only - nothing in notebook)\n",
    "- [**PROJECT 3**: Building our Neural Network](#project_3)\n",
    "\n",
    "\n",
    "- [Understanding Neural Noise](#lesson_4)\n",
    "- [**PROJECT 4**: Making Learning Faster by Reducing Noise](#project_4)\n",
    "\n",
    "\n",
    "- [Analyzing Inefficiencies in our Network](#lesson_5)\n",
    "- [**PROJECT 5**: Making our Network Train and Run Faster](#project_5)\n",
    "\n",
    "\n",
    "- [Further Noise Reduction](#lesson_6)\n",
    "- [**PROJECT 6**: Reducing Noise by Strategically Reducing the Vocabulary](#project_6)\n",
    "\n",
    "\n",
    "- [Analysis: What's going on in the weights?](#lesson_7)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "nbpresent": {
     "id": "56bb3cba-260c-4ebe-9ed6-b995b4c72aa3"
    }
   },
   "source": [
    "# Lesson: Curate a Dataset<a id='lesson_1'></a>\n",
    "The cells from here until Project 1 include code Andrew shows in the videos leading up to mini project 1. We've included them so you can run the code along with the videos without having to type in everything."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {
    "nbpresent": {
     "id": "eba2b193-0419-431e-8db9-60f34dd3fe83"
    }
   },
   "outputs": [],
   "source": [
    "def pretty_print_review_and_label(i):\n",
    "    print(labels[i] + \"\\t:\\t\" + reviews[i][:80] + \"...\")\n",
    "\n",
    "g = open('reviews.txt','r') # What we know!\n",
    "reviews = list(map(lambda x:x[:-1],g.readlines()))\n",
    "g.close()\n",
    "\n",
    "g = open('labels.txt','r') # What we WANT to know!\n",
    "labels = list(map(lambda x:x[:-1].upper(),g.readlines()))\n",
    "g.close()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "**Note:** The data in `reviews.txt` we're using has already been preprocessed a bit and contains only lower case characters. If we were working from raw data, where we didn't know it was all lower case, we would want to add a step here to convert it. That's so we treat different variations of the same word, like `The`, `the`, and `THE`, all the same way."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "25000"
      ]
     },
     "execution_count": 2,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "len(reviews)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {
    "nbpresent": {
     "id": "bb95574b-21a0-4213-ae50-34363cf4f87f"
    }
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "'bromwell high is a cartoon comedy . it ran at the same time as some other programs about school life  such as  teachers  . my   years in the teaching profession lead me to believe that bromwell high  s satire is much closer to reality than is  teachers  . the scramble to survive financially  the insightful students who can see right through their pathetic teachers  pomp  the pettiness of the whole situation  all remind me of the schools i knew and their students . when i saw the episode in which a student repeatedly tried to burn down the school  i immediately recalled . . . . . . . . . at . . . . . . . . . . high . a classic line inspector i  m here to sack one of your teachers . student welcome to bromwell high . i expect that many adults of my age think that bromwell high is far fetched . what a pity that it isn  t   '"
      ]
     },
     "execution_count": 3,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "reviews[0]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {
    "nbpresent": {
     "id": "e0408810-c424-4ed4-afb9-1735e9ddbd0a"
    }
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "'POSITIVE'"
      ]
     },
     "execution_count": 4,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "labels[0]"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Lesson: Develop a Predictive Theory<a id='lesson_2'></a>"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "collapsed": true,
    "nbpresent": {
     "id": "e67a709f-234f-4493-bae6-4fb192141ee0"
    }
   },
   "outputs": [],
   "source": [
    "print(\"labels.txt \\t : \\t reviews.txt\\n\")\n",
    "pretty_print_review_and_label(2137)\n",
    "pretty_print_review_and_label(12816)\n",
    "pretty_print_review_and_label(6267)\n",
    "pretty_print_review_and_label(21934)\n",
    "pretty_print_review_and_label(5297)\n",
    "pretty_print_review_and_label(4998)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Project 1: Quick Theory Validation<a id='project_1'></a>\n",
    "\n",
    "There are multiple ways to implement these projects, but in order to get your code closer to what Andrew shows in his solutions, we've provided some hints and starter code throughout this notebook.\n",
    "\n",
    "You'll find the [Counter](https://docs.python.org/2/library/collections.html#collections.Counter) class to be useful in this exercise, as well as the [numpy](https://docs.scipy.org/doc/numpy/reference/) library."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [],
   "source": [
    "from collections import Counter\n",
    "import numpy as np"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "We'll create three `Counter` objects, one for words from postive reviews, one for words from negative reviews, and one for all the words."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {},
   "outputs": [],
   "source": [
    "# Create three Counter objects to store positive, negative and total counts\n",
    "positive_counts = Counter()\n",
    "negative_counts = Counter()\n",
    "total_counts = Counter()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "**TODO:** Examine all the reviews. For each word in a positive review, increase the count for that word in both your positive counter and the total words counter; likewise, for each word in a negative review, increase the count for that word in both your negative counter and the total words counter.\n",
    "\n",
    "**Note:** Throughout these projects, you should use `split(' ')` to divide a piece of text (such as a review) into individual words. If you use `split()` instead, you'll get slightly different results than what the videos and solutions show."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {},
   "outputs": [],
   "source": [
    "# TODO: Loop over all the words in all the reviews and increment the counts in the appropriate counter objects\n",
    "for i in range(len(reviews)):\n",
    "    if(labels[i] == 'POSITIVE'):\n",
    "        for word in reviews[i].split(\" \"):\n",
    "            positive_counts[word] += 1\n",
    "            total_counts[word] += 1\n",
    "    else:\n",
    "        for word in reviews[i].split(\" \"):\n",
    "            negative_counts[word] += 1\n",
    "            total_counts[word] += 1"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Run the following two cells to list the words used in positive reviews and negative reviews, respectively, ordered from most to least commonly used. "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "[('', 550468),\n",
       " ('the', 173324),\n",
       " ('.', 159654),\n",
       " ('and', 89722),\n",
       " ('a', 83688),\n",
       " ('of', 76855),\n",
       " ('to', 66746),\n",
       " ('is', 57245),\n",
       " ('in', 50215),\n",
       " ('br', 49235),\n",
       " ('it', 48025),\n",
       " ('i', 40743),\n",
       " ('that', 35630),\n",
       " ('this', 35080),\n",
       " ('s', 33815),\n",
       " ('as', 26308),\n",
       " ('with', 23247),\n",
       " ('for', 22416),\n",
       " ('was', 21917),\n",
       " ('film', 20937),\n",
       " ('but', 20822),\n",
       " ('movie', 19074),\n",
       " ('his', 17227),\n",
       " ('on', 17008),\n",
       " ('you', 16681),\n",
       " ('he', 16282),\n",
       " ('are', 14807),\n",
       " ('not', 14272),\n",
       " ('t', 13720),\n",
       " ('one', 13655),\n",
       " ('have', 12587),\n",
       " ('be', 12416),\n",
       " ('by', 11997),\n",
       " ('all', 11942),\n",
       " ('who', 11464),\n",
       " ('an', 11294),\n",
       " ('at', 11234),\n",
       " ('from', 10767),\n",
       " ('her', 10474),\n",
       " ('they', 9895),\n",
       " ('has', 9186),\n",
       " ('so', 9154),\n",
       " ('like', 9038),\n",
       " ('about', 8313),\n",
       " ('very', 8305),\n",
       " ('out', 8134),\n",
       " ('there', 8057),\n",
       " ('she', 7779),\n",
       " ('what', 7737),\n",
       " ('or', 7732),\n",
       " ('good', 7720),\n",
       " ('more', 7521),\n",
       " ('when', 7456),\n",
       " ('some', 7441),\n",
       " ('if', 7285),\n",
       " ('just', 7152),\n",
       " ('can', 7001),\n",
       " ('story', 6780),\n",
       " ('time', 6515),\n",
       " ('my', 6488),\n",
       " ('great', 6419),\n",
       " ('well', 6405),\n",
       " ('up', 6321),\n",
       " ('which', 6267),\n",
       " ('their', 6107),\n",
       " ('see', 6026),\n",
       " ('also', 5550),\n",
       " ('we', 5531),\n",
       " ('really', 5476),\n",
       " ('would', 5400),\n",
       " ('will', 5218),\n",
       " ('me', 5167),\n",
       " ('had', 5148),\n",
       " ('only', 5137),\n",
       " ('him', 5018),\n",
       " ('even', 4964),\n",
       " ('most', 4864),\n",
       " ('other', 4858),\n",
       " ('were', 4782),\n",
       " ('first', 4755),\n",
       " ('than', 4736),\n",
       " ('much', 4685),\n",
       " ('its', 4622),\n",
       " ('no', 4574),\n",
       " ('into', 4544),\n",
       " ('people', 4479),\n",
       " ('best', 4319),\n",
       " ('love', 4301),\n",
       " ('get', 4272),\n",
       " ('how', 4213),\n",
       " ('life', 4199),\n",
       " ('been', 4189),\n",
       " ('because', 4079),\n",
       " ('way', 4036),\n",
       " ('do', 3941),\n",
       " ('made', 3823),\n",
       " ('films', 3813),\n",
       " ('them', 3805),\n",
       " ('after', 3800),\n",
       " ('many', 3766),\n",
       " ('two', 3733),\n",
       " ('too', 3659),\n",
       " ('think', 3655),\n",
       " ('movies', 3586),\n",
       " ('characters', 3560),\n",
       " ('character', 3514),\n",
       " ('don', 3468),\n",
       " ('man', 3460),\n",
       " ('show', 3432),\n",
       " ('watch', 3424),\n",
       " ('seen', 3414),\n",
       " ('then', 3358),\n",
       " ('little', 3341),\n",
       " ('still', 3340),\n",
       " ('make', 3303),\n",
       " ('could', 3237),\n",
       " ('never', 3226),\n",
       " ('being', 3217),\n",
       " ('where', 3173),\n",
       " ('does', 3069),\n",
       " ('over', 3017),\n",
       " ('any', 3002),\n",
       " ('while', 2899),\n",
       " ('know', 2833),\n",
       " ('did', 2790),\n",
       " ('years', 2758),\n",
       " ('here', 2740),\n",
       " ('ever', 2734),\n",
       " ('end', 2696),\n",
       " ('these', 2694),\n",
       " ('such', 2590),\n",
       " ('real', 2568),\n",
       " ('scene', 2567),\n",
       " ('back', 2547),\n",
       " ('those', 2485),\n",
       " ('though', 2475),\n",
       " ('off', 2463),\n",
       " ('new', 2458),\n",
       " ('your', 2453),\n",
       " ('go', 2440),\n",
       " ('acting', 2437),\n",
       " ('plot', 2432),\n",
       " ('world', 2429),\n",
       " ('scenes', 2427),\n",
       " ('say', 2414),\n",
       " ('through', 2409),\n",
       " ('makes', 2390),\n",
       " ('better', 2381),\n",
       " ('now', 2368),\n",
       " ('work', 2346),\n",
       " ('young', 2343),\n",
       " ('old', 2311),\n",
       " ('ve', 2307),\n",
       " ('find', 2272),\n",
       " ('both', 2248),\n",
       " ('before', 2177),\n",
       " ('us', 2162),\n",
       " ('again', 2158),\n",
       " ('series', 2153),\n",
       " ('quite', 2143),\n",
       " ('something', 2135),\n",
       " ('cast', 2133),\n",
       " ('should', 2121),\n",
       " ('part', 2098),\n",
       " ('always', 2088),\n",
       " ('lot', 2087),\n",
       " ('another', 2075),\n",
       " ('actors', 2047),\n",
       " ('director', 2040),\n",
       " ('family', 2032),\n",
       " ('between', 2016),\n",
       " ('own', 2016),\n",
       " ('m', 1998),\n",
       " ('may', 1997),\n",
       " ('same', 1972),\n",
       " ('role', 1967),\n",
       " ('watching', 1966),\n",
       " ('every', 1954),\n",
       " ('funny', 1953),\n",
       " ('doesn', 1935),\n",
       " ('performance', 1928),\n",
       " ('few', 1918),\n",
       " ('bad', 1907),\n",
       " ('look', 1900),\n",
       " ('re', 1884),\n",
       " ('why', 1855),\n",
       " ('things', 1849),\n",
       " ('times', 1832),\n",
       " ('big', 1815),\n",
       " ('however', 1795),\n",
       " ('actually', 1790),\n",
       " ('action', 1789),\n",
       " ('going', 1783),\n",
       " ('bit', 1757),\n",
       " ('comedy', 1742),\n",
       " ('down', 1740),\n",
       " ('music', 1738),\n",
       " ('must', 1728),\n",
       " ('take', 1709),\n",
       " ('saw', 1692),\n",
       " ('long', 1690),\n",
       " ('right', 1688),\n",
       " ('fun', 1686),\n",
       " ('fact', 1684),\n",
       " ('excellent', 1683),\n",
       " ('around', 1674),\n",
       " ('didn', 1672),\n",
       " ('without', 1671),\n",
       " ('thing', 1662),\n",
       " ('thought', 1639),\n",
       " ('got', 1635),\n",
       " ('each', 1630),\n",
       " ('day', 1614),\n",
       " ('feel', 1597),\n",
       " ('seems', 1596),\n",
       " ('come', 1594),\n",
       " ('done', 1586),\n",
       " ('beautiful', 1580),\n",
       " ('especially', 1572),\n",
       " ('played', 1571),\n",
       " ('almost', 1566),\n",
       " ('want', 1562),\n",
       " ('yet', 1556),\n",
       " ('give', 1553),\n",
       " ('pretty', 1549),\n",
       " ('last', 1543),\n",
       " ('since', 1519),\n",
       " ('different', 1504),\n",
       " ('although', 1501),\n",
       " ('gets', 1490),\n",
       " ('true', 1487),\n",
       " ('interesting', 1481),\n",
       " ('job', 1470),\n",
       " ('enough', 1455),\n",
       " ('our', 1454),\n",
       " ('shows', 1447),\n",
       " ('horror', 1441),\n",
       " ('woman', 1439),\n",
       " ('tv', 1400),\n",
       " ('probably', 1398),\n",
       " ('father', 1395),\n",
       " ('original', 1393),\n",
       " ('girl', 1390),\n",
       " ('point', 1379),\n",
       " ('plays', 1378),\n",
       " ('wonderful', 1372),\n",
       " ('far', 1358),\n",
       " ('course', 1358),\n",
       " ('john', 1350),\n",
       " ('rather', 1340),\n",
       " ('isn', 1328),\n",
       " ('ll', 1326),\n",
       " ('later', 1324),\n",
       " ('dvd', 1324),\n",
       " ('whole', 1310),\n",
       " ('war', 1310),\n",
       " ('d', 1307),\n",
       " ('found', 1306),\n",
       " ('away', 1306),\n",
       " ('screen', 1305),\n",
       " ('nothing', 1300),\n",
       " ('year', 1297),\n",
       " ('once', 1296),\n",
       " ('hard', 1294),\n",
       " ('together', 1280),\n",
       " ('set', 1277),\n",
       " ('am', 1277),\n",
       " ('having', 1266),\n",
       " ('making', 1265),\n",
       " ('place', 1263),\n",
       " ('might', 1260),\n",
       " ('comes', 1260),\n",
       " ('sure', 1253),\n",
       " ('american', 1248),\n",
       " ('play', 1245),\n",
       " ('kind', 1244),\n",
       " ('perfect', 1242),\n",
       " ('takes', 1242),\n",
       " ('performances', 1237),\n",
       " ('himself', 1230),\n",
       " ('worth', 1221),\n",
       " ('everyone', 1221),\n",
       " ('anyone', 1214),\n",
       " ('actor', 1203),\n",
       " ('three', 1201),\n",
       " ('wife', 1196),\n",
       " ('classic', 1192),\n",
       " ('goes', 1186),\n",
       " ('ending', 1178),\n",
       " ('version', 1168),\n",
       " ('star', 1149),\n",
       " ('enjoy', 1146),\n",
       " ('book', 1142),\n",
       " ('nice', 1132),\n",
       " ('everything', 1128),\n",
       " ('during', 1124),\n",
       " ('put', 1118),\n",
       " ('seeing', 1111),\n",
       " ('least', 1102),\n",
       " ('house', 1100),\n",
       " ('high', 1095),\n",
       " ('watched', 1094),\n",
       " ('loved', 1087),\n",
       " ('men', 1087),\n",
       " ('night', 1082),\n",
       " ('anything', 1075),\n",
       " ('believe', 1071),\n",
       " ('guy', 1071),\n",
       " ('top', 1063),\n",
       " ('amazing', 1058),\n",
       " ('hollywood', 1056),\n",
       " ('looking', 1053),\n",
       " ('main', 1044),\n",
       " ('definitely', 1043),\n",
       " ('gives', 1031),\n",
       " ('home', 1029),\n",
       " ('seem', 1028),\n",
       " ('episode', 1023),\n",
       " ('audience', 1020),\n",
       " ('sense', 1020),\n",
       " ('truly', 1017),\n",
       " ('special', 1011),\n",
       " ('second', 1009),\n",
       " ('short', 1009),\n",
       " ('fan', 1009),\n",
       " ('mind', 1005),\n",
       " ('human', 1001),\n",
       " ('recommend', 999),\n",
       " ('full', 996),\n",
       " ('black', 995),\n",
       " ('help', 991),\n",
       " ('along', 989),\n",
       " ('trying', 987),\n",
       " ('small', 986),\n",
       " ('death', 985),\n",
       " ('friends', 981),\n",
       " ('remember', 974),\n",
       " ('often', 970),\n",
       " ('said', 966),\n",
       " ('favorite', 962),\n",
       " ('heart', 959),\n",
       " ('early', 957),\n",
       " ('left', 956),\n",
       " ('until', 955),\n",
       " ('script', 954),\n",
       " ('let', 954),\n",
       " ('maybe', 937),\n",
       " ('today', 936),\n",
       " ('live', 934),\n",
       " ('less', 934),\n",
       " ('moments', 933),\n",
       " ('others', 929),\n",
       " ('brilliant', 926),\n",
       " ('shot', 925),\n",
       " ('liked', 923),\n",
       " ('become', 916),\n",
       " ('won', 915),\n",
       " ('used', 910),\n",
       " ('style', 907),\n",
       " ('mother', 895),\n",
       " ('lives', 894),\n",
       " ('came', 893),\n",
       " ('stars', 890),\n",
       " ('cinema', 889),\n",
       " ('looks', 885),\n",
       " ('perhaps', 884),\n",
       " ('read', 882),\n",
       " ('enjoyed', 879),\n",
       " ('boy', 875),\n",
       " ('drama', 873),\n",
       " ('highly', 871),\n",
       " ('given', 870),\n",
       " ('playing', 867),\n",
       " ('use', 864),\n",
       " ('next', 859),\n",
       " ('women', 858),\n",
       " ('fine', 857),\n",
       " ('effects', 856),\n",
       " ('kids', 854),\n",
       " ('entertaining', 853),\n",
       " ('need', 852),\n",
       " ('line', 850),\n",
       " ('works', 848),\n",
       " ('someone', 847),\n",
       " ('mr', 836),\n",
       " ('simply', 835),\n",
       " ('picture', 833),\n",
       " ('children', 833),\n",
       " ('face', 831),\n",
       " ('keep', 831),\n",
       " ('friend', 831),\n",
       " ('dark', 830),\n",
       " ('overall', 828),\n",
       " ('certainly', 828),\n",
       " ('minutes', 827),\n",
       " ('wasn', 824),\n",
       " ('history', 822),\n",
       " ('finally', 820),\n",
       " ('couple', 816),\n",
       " ('against', 815),\n",
       " ('son', 809),\n",
       " ('understand', 808),\n",
       " ('lost', 807),\n",
       " ('michael', 805),\n",
       " ('else', 801),\n",
       " ('throughout', 798),\n",
       " ('fans', 797),\n",
       " ('city', 792),\n",
       " ('reason', 789),\n",
       " ('written', 787),\n",
       " ('production', 787),\n",
       " ('several', 784),\n",
       " ('school', 783),\n",
       " ('based', 781),\n",
       " ('rest', 781),\n",
       " ('try', 780),\n",
       " ('dead', 776),\n",
       " ('hope', 775),\n",
       " ('strong', 768),\n",
       " ('white', 765),\n",
       " ('tell', 759),\n",
       " ('itself', 758),\n",
       " ('half', 753),\n",
       " ('person', 749),\n",
       " ('sometimes', 746),\n",
       " ('past', 744),\n",
       " ('start', 744),\n",
       " ('genre', 743),\n",
       " ('beginning', 739),\n",
       " ('final', 739),\n",
       " ('town', 738),\n",
       " ('art', 734),\n",
       " ('humor', 732),\n",
       " ('game', 732),\n",
       " ('yes', 731),\n",
       " ('idea', 731),\n",
       " ('late', 730),\n",
       " ('becomes', 729),\n",
       " ('despite', 729),\n",
       " ('able', 726),\n",
       " ('case', 726),\n",
       " ('money', 723),\n",
       " ('child', 721),\n",
       " ('completely', 721),\n",
       " ('side', 719),\n",
       " ('camera', 716),\n",
       " ('getting', 714),\n",
       " ('instead', 712),\n",
       " ('soon', 702),\n",
       " ('under', 700),\n",
       " ('viewer', 699),\n",
       " ('age', 697),\n",
       " ('days', 696),\n",
       " ('stories', 696),\n",
       " ('felt', 694),\n",
       " ('simple', 694),\n",
       " ('roles', 693),\n",
       " ('video', 688),\n",
       " ('name', 683),\n",
       " ('either', 683),\n",
       " ('doing', 677),\n",
       " ('turns', 674),\n",
       " ('wants', 671),\n",
       " ('close', 671),\n",
       " ('title', 669),\n",
       " ('wrong', 668),\n",
       " ('went', 666),\n",
       " ('james', 665),\n",
       " ('evil', 659),\n",
       " ('budget', 657),\n",
       " ('episodes', 657),\n",
       " ('relationship', 655),\n",
       " ('fantastic', 653),\n",
       " ('piece', 653),\n",
       " ('david', 651),\n",
       " ('turn', 648),\n",
       " ('murder', 646),\n",
       " ('parts', 645),\n",
       " ('brother', 644),\n",
       " ('absolutely', 643),\n",
       " ('head', 643),\n",
       " ('experience', 642),\n",
       " ('eyes', 641),\n",
       " ('sex', 638),\n",
       " ('direction', 637),\n",
       " ('called', 637),\n",
       " ('directed', 636),\n",
       " ('lines', 634),\n",
       " ('behind', 633),\n",
       " ('sort', 632),\n",
       " ('actress', 631),\n",
       " ('lead', 630),\n",
       " ('oscar', 628),\n",
       " ('including', 627),\n",
       " ('example', 627),\n",
       " ('known', 625),\n",
       " ('musical', 625),\n",
       " ('chance', 621),\n",
       " ('score', 620),\n",
       " ('already', 619),\n",
       " ('feeling', 619),\n",
       " ('hit', 619),\n",
       " ('voice', 615),\n",
       " ('moment', 612),\n",
       " ('living', 612),\n",
       " ('low', 610),\n",
       " ('supporting', 610),\n",
       " ('ago', 609),\n",
       " ('themselves', 608),\n",
       " ('reality', 605),\n",
       " ('hilarious', 605),\n",
       " ('jack', 604),\n",
       " ('told', 603),\n",
       " ('hand', 601),\n",
       " ('quality', 600),\n",
       " ('moving', 600),\n",
       " ('dialogue', 600),\n",
       " ('song', 599),\n",
       " ('happy', 599),\n",
       " ('matter', 598),\n",
       " ('paul', 598),\n",
       " ('light', 594),\n",
       " ('future', 593),\n",
       " ('entire', 592),\n",
       " ('finds', 591),\n",
       " ('gave', 589),\n",
       " ('laugh', 587),\n",
       " ('released', 586),\n",
       " ('expect', 584),\n",
       " ('fight', 581),\n",
       " ('particularly', 580),\n",
       " ('cinematography', 579),\n",
       " ('police', 579),\n",
       " ('whose', 578),\n",
       " ('type', 578),\n",
       " ('sound', 578),\n",
       " ('view', 573),\n",
       " ('enjoyable', 573),\n",
       " ('number', 572),\n",
       " ('romantic', 572),\n",
       " ('husband', 572),\n",
       " ('daughter', 572),\n",
       " ('documentary', 571),\n",
       " ('self', 570),\n",
       " ('superb', 569),\n",
       " ('modern', 569),\n",
       " ('took', 569),\n",
       " ('robert', 569),\n",
       " ('mean', 566),\n",
       " ('shown', 563),\n",
       " ('coming', 561),\n",
       " ('important', 560),\n",
       " ('king', 559),\n",
       " ('leave', 559),\n",
       " ('change', 558),\n",
       " ('somewhat', 555),\n",
       " ('wanted', 555),\n",
       " ('tells', 554),\n",
       " ('events', 552),\n",
       " ('run', 552),\n",
       " ('career', 552),\n",
       " ('country', 552),\n",
       " ('heard', 550),\n",
       " ('season', 550),\n",
       " ('greatest', 549),\n",
       " ('girls', 549),\n",
       " ('etc', 547),\n",
       " ('care', 546),\n",
       " ('starts', 545),\n",
       " ('english', 542),\n",
       " ('killer', 541),\n",
       " ('tale', 540),\n",
       " ('guys', 540),\n",
       " ('totally', 540),\n",
       " ('animation', 540),\n",
       " ('usual', 539),\n",
       " ('miss', 535),\n",
       " ('opinion', 535),\n",
       " ('easy', 531),\n",
       " ('violence', 531),\n",
       " ('songs', 530),\n",
       " ('british', 528),\n",
       " ('says', 526),\n",
       " ('realistic', 525),\n",
       " ('writing', 524),\n",
       " ('writer', 522),\n",
       " ('act', 522),\n",
       " ('comic', 521),\n",
       " ('thriller', 519),\n",
       " ('television', 517),\n",
       " ('power', 516),\n",
       " ('ones', 515),\n",
       " ('kid', 514),\n",
       " ('york', 513),\n",
       " ('novel', 513),\n",
       " ('alone', 512),\n",
       " ('problem', 512),\n",
       " ('attention', 509),\n",
       " ('involved', 508),\n",
       " ('kill', 507),\n",
       " ('extremely', 507),\n",
       " ('seemed', 506),\n",
       " ('hero', 505),\n",
       " ('french', 505),\n",
       " ('rock', 504),\n",
       " ('stuff', 501),\n",
       " ('wish', 499),\n",
       " ('begins', 498),\n",
       " ('taken', 497),\n",
       " ('sad', 497),\n",
       " ('ways', 496),\n",
       " ('richard', 495),\n",
       " ('knows', 494),\n",
       " ('atmosphere', 493),\n",
       " ('similar', 491),\n",
       " ('surprised', 491),\n",
       " ('taking', 491),\n",
       " ('car', 491),\n",
       " ('george', 490),\n",
       " ('perfectly', 490),\n",
       " ('across', 489),\n",
       " ('team', 489),\n",
       " ('eye', 489),\n",
       " ('sequence', 489),\n",
       " ('room', 488),\n",
       " ('due', 488),\n",
       " ('among', 488),\n",
       " ('serious', 488),\n",
       " ('powerful', 488),\n",
       " ('strange', 487),\n",
       " ('order', 487),\n",
       " ('cannot', 487),\n",
       " ('b', 487),\n",
       " ('beauty', 486),\n",
       " ('famous', 485),\n",
       " ('happened', 484),\n",
       " ('tries', 484),\n",
       " ('herself', 484),\n",
       " ('myself', 484),\n",
       " ('class', 483),\n",
       " ('four', 482),\n",
       " ('cool', 481),\n",
       " ('release', 479),\n",
       " ('anyway', 479),\n",
       " ('theme', 479),\n",
       " ('opening', 478),\n",
       " ('entertainment', 477),\n",
       " ('slow', 475),\n",
       " ('ends', 475),\n",
       " ('unique', 475),\n",
       " ('exactly', 475),\n",
       " ('easily', 474),\n",
       " ('level', 474),\n",
       " ('o', 474),\n",
       " ('red', 474),\n",
       " ('interest', 472),\n",
       " ('happen', 471),\n",
       " ('crime', 470),\n",
       " ('viewing', 468),\n",
       " ('sets', 467),\n",
       " ('memorable', 467),\n",
       " ('stop', 466),\n",
       " ('group', 466),\n",
       " ('problems', 463),\n",
       " ('dance', 463),\n",
       " ('working', 463),\n",
       " ('sister', 463),\n",
       " ('message', 463),\n",
       " ('knew', 462),\n",
       " ('mystery', 461),\n",
       " ('nature', 461),\n",
       " ('bring', 460),\n",
       " ('believable', 459),\n",
       " ('thinking', 459),\n",
       " ('brought', 459),\n",
       " ('mostly', 458),\n",
       " ('disney', 457),\n",
       " ('couldn', 457),\n",
       " ('society', 456),\n",
       " ('lady', 455),\n",
       " ('within', 455),\n",
       " ('blood', 454),\n",
       " ('parents', 453),\n",
       " ('upon', 453),\n",
       " ('viewers', 453),\n",
       " ('meets', 452),\n",
       " ('form', 452),\n",
       " ('peter', 452),\n",
       " ('tom', 452),\n",
       " ('usually', 452),\n",
       " ('soundtrack', 452),\n",
       " ('local', 450),\n",
       " ('certain', 448),\n",
       " ('follow', 448),\n",
       " ('whether', 447),\n",
       " ('possible', 446),\n",
       " ('emotional', 445),\n",
       " ('killed', 444),\n",
       " ('above', 444),\n",
       " ('de', 444),\n",
       " ('god', 443),\n",
       " ('middle', 443),\n",
       " ('needs', 442),\n",
       " ('happens', 442),\n",
       " ('flick', 442),\n",
       " ('masterpiece', 441),\n",
       " ('period', 440),\n",
       " ('major', 440),\n",
       " ('named', 439),\n",
       " ('haven', 439),\n",
       " ('particular', 438),\n",
       " ('th', 438),\n",
       " ('earth', 437),\n",
       " ('feature', 437),\n",
       " ('stand', 436),\n",
       " ('words', 435),\n",
       " ('typical', 435),\n",
       " ('elements', 433),\n",
       " ('obviously', 433),\n",
       " ('romance', 431),\n",
       " ('jane', 430),\n",
       " ('yourself', 427),\n",
       " ('showing', 427),\n",
       " ('brings', 426),\n",
       " ('fantasy', 426),\n",
       " ('guess', 423),\n",
       " ('america', 423),\n",
       " ('unfortunately', 422),\n",
       " ('huge', 422),\n",
       " ('indeed', 421),\n",
       " ('running', 421),\n",
       " ('talent', 420),\n",
       " ('stage', 419),\n",
       " ('started', 418),\n",
       " ('leads', 417),\n",
       " ('sweet', 417),\n",
       " ('japanese', 417),\n",
       " ('poor', 416),\n",
       " ('deal', 416),\n",
       " ('incredible', 413),\n",
       " ('personal', 413),\n",
       " ('fast', 412),\n",
       " ('became', 410),\n",
       " ('deep', 410),\n",
       " ('hours', 409),\n",
       " ('giving', 408),\n",
       " ('nearly', 408),\n",
       " ('dream', 408),\n",
       " ('clearly', 407),\n",
       " ('turned', 407),\n",
       " ('obvious', 406),\n",
       " ('near', 406),\n",
       " ('cut', 405),\n",
       " ('surprise', 405),\n",
       " ('era', 404),\n",
       " ('body', 404),\n",
       " ('hour', 403),\n",
       " ('female', 403),\n",
       " ('five', 403),\n",
       " ('note', 399),\n",
       " ('learn', 398),\n",
       " ('truth', 398),\n",
       " ('except', 397),\n",
       " ('feels', 397),\n",
       " ('match', 397),\n",
       " ('tony', 397),\n",
       " ('filmed', 394),\n",
       " ('clear', 394),\n",
       " ('complete', 394),\n",
       " ('street', 393),\n",
       " ('eventually', 393),\n",
       " ('keeps', 393),\n",
       " ('older', 393),\n",
       " ('lots', 393),\n",
       " ('buy', 392),\n",
       " ('william', 391),\n",
       " ('stewart', 391),\n",
       " ('fall', 390),\n",
       " ('joe', 390),\n",
       " ('meet', 390),\n",
       " ('unlike', 389),\n",
       " ('talking', 389),\n",
       " ('shots', 389),\n",
       " ('rating', 389),\n",
       " ('difficult', 389),\n",
       " ('dramatic', 388),\n",
       " ('means', 388),\n",
       " ('situation', 386),\n",
       " ('wonder', 386),\n",
       " ('present', 386),\n",
       " ('appears', 386),\n",
       " ('subject', 386),\n",
       " ('comments', 385),\n",
       " ('general', 383),\n",
       " ('sequences', 383),\n",
       " ('lee', 383),\n",
       " ('points', 382),\n",
       " ('earlier', 382),\n",
       " ('gone', 379),\n",
       " ('check', 379),\n",
       " ('suspense', 378),\n",
       " ('recommended', 378),\n",
       " ('ten', 378),\n",
       " ('third', 377),\n",
       " ('business', 377),\n",
       " ('talk', 375),\n",
       " ('leaves', 375),\n",
       " ('beyond', 375),\n",
       " ('portrayal', 374),\n",
       " ('beautifully', 373),\n",
       " ('single', 372),\n",
       " ('bill', 372),\n",
       " ('plenty', 371),\n",
       " ('word', 371),\n",
       " ('whom', 370),\n",
       " ('falls', 370),\n",
       " ('scary', 369),\n",
       " ('non', 369),\n",
       " ('figure', 369),\n",
       " ('battle', 369),\n",
       " ('using', 368),\n",
       " ('return', 368),\n",
       " ('doubt', 367),\n",
       " ('add', 367),\n",
       " ('hear', 366),\n",
       " ('solid', 366),\n",
       " ('success', 366),\n",
       " ('jokes', 365),\n",
       " ('oh', 365),\n",
       " ('touching', 365),\n",
       " ('political', 365),\n",
       " ('hell', 364),\n",
       " ('awesome', 364),\n",
       " ('boys', 364),\n",
       " ('sexual', 362),\n",
       " ('recently', 362),\n",
       " ('dog', 362),\n",
       " ('please', 361),\n",
       " ('wouldn', 361),\n",
       " ('straight', 361),\n",
       " ('features', 361),\n",
       " ('forget', 360),\n",
       " ('setting', 360),\n",
       " ('lack', 360),\n",
       " ('married', 359),\n",
       " ('mark', 359),\n",
       " ('social', 357),\n",
       " ('interested', 356),\n",
       " ('adventure', 356),\n",
       " ('actual', 355),\n",
       " ('terrific', 355),\n",
       " ('sees', 355),\n",
       " ('brothers', 355),\n",
       " ('move', 354),\n",
       " ('call', 354),\n",
       " ('various', 353),\n",
       " ('theater', 353),\n",
       " ('dr', 353),\n",
       " ('animated', 352),\n",
       " ('western', 351),\n",
       " ('baby', 350),\n",
       " ('space', 350),\n",
       " ('leading', 348),\n",
       " ('disappointed', 348),\n",
       " ('portrayed', 346),\n",
       " ('aren', 346),\n",
       " ('screenplay', 345),\n",
       " ('smith', 345),\n",
       " ('towards', 344),\n",
       " ('hate', 344),\n",
       " ('noir', 343),\n",
       " ('outstanding', 342),\n",
       " ('decent', 342),\n",
       " ('kelly', 342),\n",
       " ('directors', 341),\n",
       " ('journey', 341),\n",
       " ('none', 340),\n",
       " ('looked', 340),\n",
       " ('effective', 340),\n",
       " ('storyline', 339),\n",
       " ('caught', 339),\n",
       " ('sci', 339),\n",
       " ('fi', 339),\n",
       " ('cold', 339),\n",
       " ('mary', 339),\n",
       " ('rich', 338),\n",
       " ('charming', 338),\n",
       " ('popular', 337),\n",
       " ('rare', 337),\n",
       " ('manages', 337),\n",
       " ('harry', 337),\n",
       " ('spirit', 336),\n",
       " ('appreciate', 335),\n",
       " ('open', 335),\n",
       " ('moves', 334),\n",
       " ('basically', 334),\n",
       " ('acted', 334),\n",
       " ('inside', 333),\n",
       " ('boring', 333),\n",
       " ('century', 333),\n",
       " ('mention', 333),\n",
       " ('deserves', 333),\n",
       " ('subtle', 333),\n",
       " ('pace', 333),\n",
       " ('familiar', 332),\n",
       " ('background', 332),\n",
       " ('ben', 331),\n",
       " ('creepy', 330),\n",
       " ('supposed', 330),\n",
       " ('secret', 329),\n",
       " ('die', 328),\n",
       " ('jim', 328),\n",
       " ('question', 327),\n",
       " ('effect', 327),\n",
       " ('natural', 327),\n",
       " ('impressive', 326),\n",
       " ('rate', 326),\n",
       " ('language', 326),\n",
       " ('saying', 325),\n",
       " ('intelligent', 325),\n",
       " ('telling', 324),\n",
       " ('realize', 324),\n",
       " ('material', 324),\n",
       " ('scott', 324),\n",
       " ('singing', 323),\n",
       " ('dancing', 322),\n",
       " ('visual', 321),\n",
       " ('adult', 321),\n",
       " ('imagine', 321),\n",
       " ('kept', 320),\n",
       " ('office', 320),\n",
       " ('uses', 319),\n",
       " ('pure', 318),\n",
       " ('wait', 318),\n",
       " ('stunning', 318),\n",
       " ('review', 317),\n",
       " ('previous', 317),\n",
       " ('copy', 317),\n",
       " ('seriously', 317),\n",
       " ('reading', 316),\n",
       " ('create', 316),\n",
       " ('hot', 316),\n",
       " ('created', 316),\n",
       " ('magic', 316),\n",
       " ('somehow', 316),\n",
       " ('stay', 315),\n",
       " ('attempt', 315),\n",
       " ('escape', 315),\n",
       " ('crazy', 315),\n",
       " ('air', 315),\n",
       " ('frank', 315),\n",
       " ('hands', 314),\n",
       " ('filled', 313),\n",
       " ('expected', 312),\n",
       " ('average', 312),\n",
       " ('surprisingly', 312),\n",
       " ('complex', 311),\n",
       " ('quickly', 310),\n",
       " ('successful', 310),\n",
       " ('studio', 310),\n",
       " ('plus', 309),\n",
       " ('male', 309),\n",
       " ('co', 307),\n",
       " ('images', 306),\n",
       " ('casting', 306),\n",
       " ('following', 306),\n",
       " ('minute', 306),\n",
       " ('exciting', 306),\n",
       " ('members', 305),\n",
       " ('follows', 305),\n",
       " ('themes', 305),\n",
       " ('german', 305),\n",
       " ('reasons', 305),\n",
       " ('e', 305),\n",
       " ('touch', 304),\n",
       " ('edge', 304),\n",
       " ('free', 304),\n",
       " ('cute', 304),\n",
       " ('genius', 304),\n",
       " ('outside', 303),\n",
       " ('reviews', 302),\n",
       " ('admit', 302),\n",
       " ('ok', 302),\n",
       " ('younger', 302),\n",
       " ('fighting', 301),\n",
       " ('odd', 301),\n",
       " ('master', 301),\n",
       " ('recent', 300),\n",
       " ('thanks', 300),\n",
       " ('break', 300),\n",
       " ('comment', 300),\n",
       " ('apart', 299),\n",
       " ('emotions', 298),\n",
       " ('lovely', 298),\n",
       " ('begin', 298),\n",
       " ('doctor', 297),\n",
       " ('party', 297),\n",
       " ('italian', 297),\n",
       " ('la', 296),\n",
       " ('missed', 296),\n",
       " ...]"
      ]
     },
     "execution_count": 8,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# Examine the counts of the most common words in positive reviews\n",
    "positive_counts.most_common()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "[('', 561462),\n",
       " ('.', 167538),\n",
       " ('the', 163389),\n",
       " ('a', 79321),\n",
       " ('and', 74385),\n",
       " ('of', 69009),\n",
       " ('to', 68974),\n",
       " ('br', 52637),\n",
       " ('is', 50083),\n",
       " ('it', 48327),\n",
       " ('i', 46880),\n",
       " ('in', 43753),\n",
       " ('this', 40920),\n",
       " ('that', 37615),\n",
       " ('s', 31546),\n",
       " ('was', 26291),\n",
       " ('movie', 24965),\n",
       " ('for', 21927),\n",
       " ('but', 21781),\n",
       " ('with', 20878),\n",
       " ('as', 20625),\n",
       " ('t', 20361),\n",
       " ('film', 19218),\n",
       " ('you', 17549),\n",
       " ('on', 17192),\n",
       " ('not', 16354),\n",
       " ('have', 15144),\n",
       " ('are', 14623),\n",
       " ('be', 14541),\n",
       " ('he', 13856),\n",
       " ('one', 13134),\n",
       " ('they', 13011),\n",
       " ('at', 12279),\n",
       " ('his', 12147),\n",
       " ('all', 12036),\n",
       " ('so', 11463),\n",
       " ('like', 11238),\n",
       " ('there', 10775),\n",
       " ('just', 10619),\n",
       " ('by', 10549),\n",
       " ('or', 10272),\n",
       " ('an', 10266),\n",
       " ('who', 9969),\n",
       " ('from', 9731),\n",
       " ('if', 9518),\n",
       " ('about', 9061),\n",
       " ('out', 8979),\n",
       " ('what', 8422),\n",
       " ('some', 8306),\n",
       " ('no', 8143),\n",
       " ('her', 7947),\n",
       " ('even', 7687),\n",
       " ('can', 7653),\n",
       " ('has', 7604),\n",
       " ('good', 7423),\n",
       " ('bad', 7401),\n",
       " ('would', 7036),\n",
       " ('up', 6970),\n",
       " ('only', 6781),\n",
       " ('more', 6730),\n",
       " ('when', 6726),\n",
       " ('she', 6444),\n",
       " ('really', 6262),\n",
       " ('time', 6209),\n",
       " ('had', 6142),\n",
       " ('my', 6015),\n",
       " ('were', 6001),\n",
       " ('which', 5780),\n",
       " ('very', 5764),\n",
       " ('me', 5606),\n",
       " ('see', 5452),\n",
       " ('don', 5336),\n",
       " ('we', 5328),\n",
       " ('their', 5278),\n",
       " ('do', 5236),\n",
       " ('story', 5208),\n",
       " ('than', 5183),\n",
       " ('been', 5100),\n",
       " ('much', 5078),\n",
       " ('get', 5037),\n",
       " ('because', 4966),\n",
       " ('people', 4806),\n",
       " ('then', 4761),\n",
       " ('make', 4722),\n",
       " ('how', 4688),\n",
       " ('could', 4686),\n",
       " ('any', 4658),\n",
       " ('into', 4567),\n",
       " ('made', 4541),\n",
       " ('first', 4306),\n",
       " ('other', 4305),\n",
       " ('well', 4254),\n",
       " ('too', 4174),\n",
       " ('them', 4165),\n",
       " ('plot', 4154),\n",
       " ('movies', 4080),\n",
       " ('acting', 4056),\n",
       " ('will', 3993),\n",
       " ('way', 3989),\n",
       " ('most', 3919),\n",
       " ('him', 3858),\n",
       " ('after', 3838),\n",
       " ('its', 3655),\n",
       " ('think', 3643),\n",
       " ('also', 3608),\n",
       " ('characters', 3600),\n",
       " ('off', 3567),\n",
       " ('watch', 3550),\n",
       " ('character', 3506),\n",
       " ('did', 3506),\n",
       " ('why', 3463),\n",
       " ('being', 3393),\n",
       " ('better', 3358),\n",
       " ('know', 3334),\n",
       " ('over', 3316),\n",
       " ('seen', 3265),\n",
       " ('ever', 3263),\n",
       " ('never', 3259),\n",
       " ('your', 3233),\n",
       " ('where', 3219),\n",
       " ('two', 3173),\n",
       " ('little', 3096),\n",
       " ('films', 3077),\n",
       " ('here', 3027),\n",
       " ('m', 3000),\n",
       " ('nothing', 2990),\n",
       " ('say', 2982),\n",
       " ('end', 2954),\n",
       " ('something', 2942),\n",
       " ('should', 2920),\n",
       " ('many', 2909),\n",
       " ('does', 2871),\n",
       " ('thing', 2866),\n",
       " ('show', 2862),\n",
       " ('ve', 2829),\n",
       " ('scene', 2816),\n",
       " ('scenes', 2785),\n",
       " ('these', 2724),\n",
       " ('go', 2717),\n",
       " ('didn', 2646),\n",
       " ('great', 2640),\n",
       " ('watching', 2640),\n",
       " ('re', 2620),\n",
       " ('doesn', 2601),\n",
       " ('through', 2560),\n",
       " ('such', 2544),\n",
       " ('man', 2516),\n",
       " ('worst', 2480),\n",
       " ('actually', 2449),\n",
       " ('actors', 2437),\n",
       " ('life', 2429),\n",
       " ('back', 2424),\n",
       " ('while', 2418),\n",
       " ('director', 2405),\n",
       " ('funny', 2336),\n",
       " ('going', 2319),\n",
       " ('still', 2283),\n",
       " ('another', 2254),\n",
       " ('look', 2247),\n",
       " ('now', 2237),\n",
       " ('old', 2215),\n",
       " ('those', 2212),\n",
       " ('real', 2170),\n",
       " ('few', 2158),\n",
       " ('love', 2152),\n",
       " ('horror', 2150),\n",
       " ('before', 2147),\n",
       " ('want', 2141),\n",
       " ('minutes', 2126),\n",
       " ('pretty', 2115),\n",
       " ('best', 2094),\n",
       " ('though', 2091),\n",
       " ('same', 2081),\n",
       " ('script', 2074),\n",
       " ('work', 2027),\n",
       " ('every', 2025),\n",
       " ('seems', 2023),\n",
       " ('least', 2011),\n",
       " ('enough', 1997),\n",
       " ('down', 1988),\n",
       " ('original', 1983),\n",
       " ('guy', 1964),\n",
       " ('got', 1952),\n",
       " ('around', 1943),\n",
       " ('part', 1942),\n",
       " ('lot', 1892),\n",
       " ('anything', 1874),\n",
       " ('find', 1860),\n",
       " ('new', 1854),\n",
       " ('again', 1849),\n",
       " ('isn', 1849),\n",
       " ('point', 1845),\n",
       " ('things', 1839),\n",
       " ('fact', 1839),\n",
       " ('give', 1823),\n",
       " ('makes', 1814),\n",
       " ('take', 1800),\n",
       " ('thought', 1798),\n",
       " ('d', 1770),\n",
       " ('whole', 1768),\n",
       " ('long', 1761),\n",
       " ('years', 1759),\n",
       " ('however', 1740),\n",
       " ('gets', 1714),\n",
       " ('making', 1695),\n",
       " ('cast', 1694),\n",
       " ('big', 1662),\n",
       " ('might', 1658),\n",
       " ('interesting', 1648),\n",
       " ('money', 1638),\n",
       " ('us', 1628),\n",
       " ('right', 1625),\n",
       " ('far', 1619),\n",
       " ('quite', 1596),\n",
       " ('without', 1595),\n",
       " ('come', 1595),\n",
       " ('almost', 1574),\n",
       " ('ll', 1567),\n",
       " ('action', 1566),\n",
       " ('awful', 1557),\n",
       " ('kind', 1539),\n",
       " ('reason', 1534),\n",
       " ('am', 1530),\n",
       " ('looks', 1528),\n",
       " ('must', 1522),\n",
       " ('done', 1510),\n",
       " ('comedy', 1504),\n",
       " ('someone', 1490),\n",
       " ('trying', 1486),\n",
       " ('wasn', 1484),\n",
       " ('poor', 1481),\n",
       " ('boring', 1478),\n",
       " ('instead', 1478),\n",
       " ('saw', 1475),\n",
       " ('away', 1469),\n",
       " ('girl', 1463),\n",
       " ('probably', 1444),\n",
       " ('believe', 1434),\n",
       " ('sure', 1433),\n",
       " ('looking', 1430),\n",
       " ('stupid', 1428),\n",
       " ('anyone', 1418),\n",
       " ('times', 1406),\n",
       " ('maybe', 1404),\n",
       " ('world', 1404),\n",
       " ('rather', 1394),\n",
       " ('terrible', 1391),\n",
       " ('may', 1390),\n",
       " ('last', 1390),\n",
       " ('since', 1388),\n",
       " ('let', 1385),\n",
       " ('tv', 1382),\n",
       " ('hard', 1374),\n",
       " ('between', 1374),\n",
       " ('waste', 1358),\n",
       " ('woman', 1356),\n",
       " ('feel', 1354),\n",
       " ('effects', 1348),\n",
       " ('half', 1341),\n",
       " ('own', 1333),\n",
       " ('young', 1317),\n",
       " ('music', 1316),\n",
       " ('idea', 1312),\n",
       " ('sense', 1306),\n",
       " ('bit', 1298),\n",
       " ('having', 1280),\n",
       " ('book', 1278),\n",
       " ('found', 1267),\n",
       " ('put', 1263),\n",
       " ('series', 1263),\n",
       " ('goes', 1256),\n",
       " ('worse', 1249),\n",
       " ('said', 1230),\n",
       " ('comes', 1224),\n",
       " ('role', 1222),\n",
       " ('main', 1220),\n",
       " ('else', 1199),\n",
       " ('everything', 1197),\n",
       " ('yet', 1196),\n",
       " ('low', 1189),\n",
       " ('screen', 1188),\n",
       " ('supposed', 1186),\n",
       " ('actor', 1185),\n",
       " ('either', 1183),\n",
       " ('budget', 1179),\n",
       " ('ending', 1179),\n",
       " ('audience', 1178),\n",
       " ('set', 1177),\n",
       " ('family', 1170),\n",
       " ('left', 1169),\n",
       " ('completely', 1168),\n",
       " ('both', 1158),\n",
       " ('wrong', 1155),\n",
       " ('always', 1151),\n",
       " ('course', 1148),\n",
       " ('place', 1148),\n",
       " ('seem', 1147),\n",
       " ('watched', 1142),\n",
       " ('day', 1132),\n",
       " ('simply', 1130),\n",
       " ('shot', 1126),\n",
       " ('mean', 1117),\n",
       " ('special', 1102),\n",
       " ('dead', 1101),\n",
       " ('three', 1094),\n",
       " ('house', 1085),\n",
       " ('oh', 1084),\n",
       " ('night', 1083),\n",
       " ('read', 1082),\n",
       " ('less', 1067),\n",
       " ('high', 1066),\n",
       " ('year', 1064),\n",
       " ('camera', 1061),\n",
       " ('worth', 1057),\n",
       " ('our', 1056),\n",
       " ('try', 1051),\n",
       " ('horrible', 1046),\n",
       " ('sex', 1046),\n",
       " ('video', 1043),\n",
       " ('black', 1039),\n",
       " ('although', 1036),\n",
       " ('couldn', 1036),\n",
       " ('once', 1033),\n",
       " ('rest', 1022),\n",
       " ('dvd', 1021),\n",
       " ('line', 1018),\n",
       " ('played', 1017),\n",
       " ('fun', 1007),\n",
       " ('during', 1006),\n",
       " ('production', 1003),\n",
       " ('everyone', 1002),\n",
       " ('play', 993),\n",
       " ('mind', 990),\n",
       " ('version', 989),\n",
       " ('kids', 989),\n",
       " ('seeing', 988),\n",
       " ('american', 980),\n",
       " ('given', 978),\n",
       " ('used', 969),\n",
       " ('performance', 968),\n",
       " ('especially', 963),\n",
       " ('together', 963),\n",
       " ('tell', 959),\n",
       " ('women', 958),\n",
       " ('start', 956),\n",
       " ('need', 955),\n",
       " ('second', 953),\n",
       " ('takes', 950),\n",
       " ('each', 950),\n",
       " ('wife', 944),\n",
       " ('dialogue', 942),\n",
       " ('use', 940),\n",
       " ('problem', 938),\n",
       " ('star', 934),\n",
       " ('unfortunately', 931),\n",
       " ('himself', 929),\n",
       " ('doing', 926),\n",
       " ('death', 922),\n",
       " ('name', 921),\n",
       " ('lines', 919),\n",
       " ('killer', 914),\n",
       " ('getting', 913),\n",
       " ('help', 905),\n",
       " ('couple', 902),\n",
       " ('fan', 902),\n",
       " ('head', 898),\n",
       " ('crap', 895),\n",
       " ('guess', 888),\n",
       " ('piece', 884),\n",
       " ('nice', 880),\n",
       " ('different', 878),\n",
       " ('school', 876),\n",
       " ('later', 875),\n",
       " ('entire', 869),\n",
       " ('shows', 860),\n",
       " ('next', 858),\n",
       " ('john', 858),\n",
       " ('short', 857),\n",
       " ('seemed', 857),\n",
       " ('hollywood', 850),\n",
       " ('home', 848),\n",
       " ('true', 846),\n",
       " ('person', 846),\n",
       " ('absolutely', 842),\n",
       " ('sort', 840),\n",
       " ('care', 839),\n",
       " ('understand', 836),\n",
       " ('plays', 835),\n",
       " ('felt', 834),\n",
       " ('written', 829),\n",
       " ('title', 828),\n",
       " ('men', 822),\n",
       " ('until', 821),\n",
       " ('flick', 816),\n",
       " ('decent', 815),\n",
       " ('face', 814),\n",
       " ('friends', 810),\n",
       " ('stars', 807),\n",
       " ('job', 807),\n",
       " ('case', 807),\n",
       " ('itself', 804),\n",
       " ('yes', 801),\n",
       " ('perhaps', 800),\n",
       " ('went', 797),\n",
       " ('wanted', 797),\n",
       " ('called', 796),\n",
       " ('annoying', 795),\n",
       " ('ridiculous', 790),\n",
       " ('tries', 790),\n",
       " ('laugh', 788),\n",
       " ('evil', 787),\n",
       " ('along', 786),\n",
       " ('top', 785),\n",
       " ('hour', 784),\n",
       " ('full', 783),\n",
       " ('came', 780),\n",
       " ('writing', 780),\n",
       " ('keep', 770),\n",
       " ('totally', 767),\n",
       " ('playing', 766),\n",
       " ('god', 765),\n",
       " ('won', 764),\n",
       " ('guys', 763),\n",
       " ('already', 762),\n",
       " ('gore', 757),\n",
       " ('direction', 748),\n",
       " ('save', 746),\n",
       " ('lost', 745),\n",
       " ('example', 744),\n",
       " ('sound', 742),\n",
       " ('war', 741),\n",
       " ('attempt', 735),\n",
       " ('car', 733),\n",
       " ('except', 733),\n",
       " ('moments', 732),\n",
       " ('blood', 732),\n",
       " ('obviously', 730),\n",
       " ('act', 729),\n",
       " ('remember', 728),\n",
       " ('kill', 727),\n",
       " ('truly', 726),\n",
       " ('white', 726),\n",
       " ('father', 726),\n",
       " ('b', 725),\n",
       " ('thinking', 720),\n",
       " ('ok', 716),\n",
       " ('finally', 716),\n",
       " ('turn', 711),\n",
       " ('quality', 701),\n",
       " ('lack', 698),\n",
       " ('style', 694),\n",
       " ('wouldn', 693),\n",
       " ('cheap', 691),\n",
       " ('none', 690),\n",
       " ('kid', 686),\n",
       " ('please', 686),\n",
       " ('boy', 685),\n",
       " ('seriously', 684),\n",
       " ('lead', 680),\n",
       " ('dull', 677),\n",
       " ('children', 676),\n",
       " ('starts', 675),\n",
       " ('stuff', 673),\n",
       " ('hope', 672),\n",
       " ('looked', 670),\n",
       " ('recommend', 669),\n",
       " ('under', 668),\n",
       " ('run', 667),\n",
       " ('killed', 667),\n",
       " ('enjoy', 666),\n",
       " ('others', 666),\n",
       " ('etc', 663),\n",
       " ('myself', 663),\n",
       " ('beginning', 662),\n",
       " ('girls', 662),\n",
       " ('against', 662),\n",
       " ('obvious', 660),\n",
       " ('small', 660),\n",
       " ('hell', 659),\n",
       " ('slow', 657),\n",
       " ('hand', 656),\n",
       " ('wonder', 652),\n",
       " ('lame', 652),\n",
       " ('becomes', 651),\n",
       " ('picture', 651),\n",
       " ('based', 650),\n",
       " ('early', 648),\n",
       " ('behind', 646),\n",
       " ('poorly', 644),\n",
       " ('avoid', 642),\n",
       " ('apparently', 640),\n",
       " ('complete', 640),\n",
       " ('happens', 639),\n",
       " ('anyway', 638),\n",
       " ('classic', 637),\n",
       " ('several', 636),\n",
       " ('despite', 635),\n",
       " ('certainly', 635),\n",
       " ('episode', 635),\n",
       " ('often', 631),\n",
       " ('cut', 630),\n",
       " ('writer', 630),\n",
       " ('mother', 628),\n",
       " ('predictable', 628),\n",
       " ('gave', 628),\n",
       " ('become', 627),\n",
       " ('close', 625),\n",
       " ('fans', 624),\n",
       " ('saying', 621),\n",
       " ('scary', 619),\n",
       " ('stop', 618),\n",
       " ('live', 618),\n",
       " ('wants', 617),\n",
       " ('self', 615),\n",
       " ('mr', 612),\n",
       " ('jokes', 611),\n",
       " ('friend', 611),\n",
       " ('cannot', 610),\n",
       " ('overall', 609),\n",
       " ('cinema', 604),\n",
       " ('child', 603),\n",
       " ('silly', 601),\n",
       " ('beautiful', 596),\n",
       " ('human', 595),\n",
       " ('expect', 594),\n",
       " ('liked', 593),\n",
       " ('happened', 592),\n",
       " ('bunch', 590),\n",
       " ('entertaining', 590),\n",
       " ('actress', 588),\n",
       " ('final', 588),\n",
       " ('says', 584),\n",
       " ('performances', 584),\n",
       " ('turns', 577),\n",
       " ('humor', 577),\n",
       " ('themselves', 576),\n",
       " ('eyes', 576),\n",
       " ('hours', 574),\n",
       " ('happen', 573),\n",
       " ('basically', 572),\n",
       " ('days', 572),\n",
       " ('running', 571),\n",
       " ('involved', 569),\n",
       " ('disappointed', 569),\n",
       " ('call', 569),\n",
       " ('directed', 568),\n",
       " ('group', 568),\n",
       " ('fight', 567),\n",
       " ('daughter', 566),\n",
       " ('talking', 566),\n",
       " ('body', 566),\n",
       " ('badly', 565),\n",
       " ('sorry', 565),\n",
       " ('throughout', 563),\n",
       " ('viewer', 563),\n",
       " ('yourself', 562),\n",
       " ('extremely', 562),\n",
       " ('interest', 561),\n",
       " ('heard', 561),\n",
       " ('violence', 561),\n",
       " ('shots', 559),\n",
       " ('side', 557),\n",
       " ('word', 556),\n",
       " ('art', 555),\n",
       " ('possible', 554),\n",
       " ('dark', 551),\n",
       " ('game', 551),\n",
       " ('hero', 550),\n",
       " ('alone', 549),\n",
       " ('son', 547),\n",
       " ('type', 547),\n",
       " ('leave', 547),\n",
       " ('gives', 546),\n",
       " ('parts', 546),\n",
       " ('single', 546),\n",
       " ('started', 545),\n",
       " ('female', 543),\n",
       " ('rating', 541),\n",
       " ('mess', 541),\n",
       " ('voice', 541),\n",
       " ('aren', 540),\n",
       " ('town', 540),\n",
       " ('drama', 538),\n",
       " ('definitely', 537),\n",
       " ('unless', 536),\n",
       " ('review', 534),\n",
       " ('effort', 533),\n",
       " ('weak', 533),\n",
       " ('able', 533),\n",
       " ('took', 531),\n",
       " ('non', 530),\n",
       " ('five', 530),\n",
       " ('matter', 529),\n",
       " ('usually', 529),\n",
       " ('michael', 528),\n",
       " ('feeling', 526),\n",
       " ('huge', 523),\n",
       " ('sequel', 522),\n",
       " ('soon', 521),\n",
       " ('exactly', 520),\n",
       " ('past', 519),\n",
       " ('turned', 518),\n",
       " ('police', 518),\n",
       " ('tried', 515),\n",
       " ('middle', 513),\n",
       " ('talent', 513),\n",
       " ('genre', 512),\n",
       " ('zombie', 510),\n",
       " ('ends', 509),\n",
       " ('history', 509),\n",
       " ('straight', 503),\n",
       " ('opening', 501),\n",
       " ('serious', 501),\n",
       " ('coming', 501),\n",
       " ('moment', 500),\n",
       " ('lives', 499),\n",
       " ('sad', 499),\n",
       " ('dialog', 498),\n",
       " ('particularly', 498),\n",
       " ('editing', 493),\n",
       " ('clearly', 492),\n",
       " ('beyond', 491),\n",
       " ('earth', 491),\n",
       " ('taken', 490),\n",
       " ('cool', 490),\n",
       " ('level', 489),\n",
       " ('dumb', 489),\n",
       " ('okay', 488),\n",
       " ('major', 487),\n",
       " ('fast', 485),\n",
       " ('premise', 485),\n",
       " ('joke', 484),\n",
       " ('stories', 484),\n",
       " ('wasted', 483),\n",
       " ('minute', 483),\n",
       " ('across', 482),\n",
       " ('mostly', 482),\n",
       " ('rent', 482),\n",
       " ('late', 481),\n",
       " ('falls', 481),\n",
       " ('fails', 481),\n",
       " ('mention', 478),\n",
       " ('theater', 475),\n",
       " ('stay', 472),\n",
       " ('sometimes', 472),\n",
       " ('hit', 468),\n",
       " ('talk', 467),\n",
       " ('fine', 467),\n",
       " ('die', 466),\n",
       " ('storyline', 465),\n",
       " ('pointless', 465),\n",
       " ('taking', 464),\n",
       " ('order', 462),\n",
       " ('brother', 461),\n",
       " ('whatever', 460),\n",
       " ('told', 460),\n",
       " ('wish', 458),\n",
       " ('room', 456),\n",
       " ('career', 455),\n",
       " ('appears', 455),\n",
       " ('write', 455),\n",
       " ('known', 454),\n",
       " ('husband', 454),\n",
       " ('living', 451),\n",
       " ('sit', 450),\n",
       " ('ten', 450),\n",
       " ('words', 449),\n",
       " ('monster', 448),\n",
       " ('chance', 448),\n",
       " ('hate', 444),\n",
       " ('novel', 444),\n",
       " ('add', 443),\n",
       " ('english', 443),\n",
       " ('somehow', 441),\n",
       " ('strange', 440),\n",
       " ('imdb', 438),\n",
       " ('actual', 438),\n",
       " ('total', 437),\n",
       " ('material', 437),\n",
       " ('killing', 437),\n",
       " ('ones', 437),\n",
       " ('knew', 436),\n",
       " ('king', 434),\n",
       " ('number', 434),\n",
       " ('using', 433),\n",
       " ('lee', 431),\n",
       " ('power', 431),\n",
       " ('shown', 431),\n",
       " ('works', 431),\n",
       " ('giving', 431),\n",
       " ('points', 430),\n",
       " ('possibly', 430),\n",
       " ('kept', 430),\n",
       " ('four', 429),\n",
       " ('local', 427),\n",
       " ('usual', 426),\n",
       " ('including', 425),\n",
       " ('problems', 424),\n",
       " ('ago', 424),\n",
       " ('opinion', 424),\n",
       " ('nudity', 423),\n",
       " ('age', 422),\n",
       " ('due', 421),\n",
       " ('roles', 420),\n",
       " ('writers', 419),\n",
       " ('decided', 419),\n",
       " ('near', 418),\n",
       " ('flat', 418),\n",
       " ('easily', 418),\n",
       " ('murder', 417),\n",
       " ('experience', 417),\n",
       " ('reviews', 416),\n",
       " ('imagine', 415),\n",
       " ('feels', 413),\n",
       " ('plain', 411),\n",
       " ('somewhat', 411),\n",
       " ('class', 410),\n",
       " ('score', 410),\n",
       " ('song', 409),\n",
       " ('bring', 409),\n",
       " ('whether', 409),\n",
       " ('otherwise', 408),\n",
       " ('whose', 408),\n",
       " ('average', 408),\n",
       " ('pathetic', 407),\n",
       " ('nearly', 407),\n",
       " ('knows', 407),\n",
       " ('zombies', 407),\n",
       " ('cinematography', 406),\n",
       " ('cheesy', 406),\n",
       " ('upon', 406),\n",
       " ('city', 405),\n",
       " ('space', 405),\n",
       " ('credits', 404),\n",
       " ('james', 403),\n",
       " ('lots', 403),\n",
       " ('change', 403),\n",
       " ('entertainment', 402),\n",
       " ('nor', 402),\n",
       " ('wait', 401),\n",
       " ('released', 400),\n",
       " ('needs', 399),\n",
       " ('shame', 398),\n",
       " ('attention', 396),\n",
       " ('comments', 394),\n",
       " ('bored', 393),\n",
       " ('free', 393),\n",
       " ('lady', 393),\n",
       " ('expected', 392),\n",
       " ('needed', 392),\n",
       " ('clear', 392),\n",
       " ('view', 391),\n",
       " ('development', 390),\n",
       " ('check', 390),\n",
       " ('doubt', 390),\n",
       " ('figure', 389),\n",
       " ('mystery', 389),\n",
       " ('excellent', 388),\n",
       " ('garbage', 388),\n",
       " ('sequence', 386),\n",
       " ('television', 386),\n",
       " ('o', 385),\n",
       " ('sets', 385),\n",
       " ('laughable', 384),\n",
       " ('potential', 384),\n",
       " ('robert', 382),\n",
       " ('light', 382),\n",
       " ('country', 382),\n",
       " ('documentary', 382),\n",
       " ('reality', 382),\n",
       " ('general', 381),\n",
       " ('ask', 381),\n",
       " ('comic', 380),\n",
       " ('fall', 380),\n",
       " ('begin', 380),\n",
       " ('footage', 379),\n",
       " ('stand', 379),\n",
       " ('forced', 379),\n",
       " ('trash', 379),\n",
       " ('remake', 379),\n",
       " ('thriller', 378),\n",
       " ('songs', 378),\n",
       " ('gay', 377),\n",
       " ('within', 377),\n",
       " ('hardly', 376),\n",
       " ('above', 375),\n",
       " ('gone', 375),\n",
       " ('george', 374),\n",
       " ('means', 373),\n",
       " ('sounds', 373),\n",
       " ('directing', 372),\n",
       " ('move', 372),\n",
       " ('david', 372),\n",
       " ('buy', 372),\n",
       " ('rock', 371),\n",
       " ('forward', 371),\n",
       " ('important', 371),\n",
       " ('hot', 370),\n",
       " ('haven', 370),\n",
       " ('filmed', 370),\n",
       " ('british', 370),\n",
       " ('heart', 369),\n",
       " ('reading', 369),\n",
       " ('fake', 369),\n",
       " ('incredibly', 368),\n",
       " ('weird', 368),\n",
       " ('hear', 368),\n",
       " ('enjoyed', 367),\n",
       " ('hilarious', 367),\n",
       " ('cop', 367),\n",
       " ('musical', 367),\n",
       " ('message', 366),\n",
       " ('happy', 366),\n",
       " ('pay', 366),\n",
       " ('laughs', 365),\n",
       " ('box', 365),\n",
       " ('suspense', 363),\n",
       " ('sadly', 363),\n",
       " ('eye', 362),\n",
       " ('third', 361),\n",
       " ('similar', 361),\n",
       " ('named', 361),\n",
       " ('modern', 360),\n",
       " ('failed', 359),\n",
       " ('events', 359),\n",
       " ('forget', 358),\n",
       " ('question', 358),\n",
       " ('male', 357),\n",
       " ('finds', 357),\n",
       " ('perfect', 356),\n",
       " ('spent', 355),\n",
       " ('sister', 355),\n",
       " ('feature', 354),\n",
       " ('result', 354),\n",
       " ('comment', 353),\n",
       " ('girlfriend', 353),\n",
       " ('sexual', 352),\n",
       " ('attempts', 351),\n",
       " ('neither', 351),\n",
       " ('richard', 351),\n",
       " ('screenplay', 350),\n",
       " ('elements', 350),\n",
       " ('spoilers', 349),\n",
       " ('brain', 348),\n",
       " ('filmmakers', 348),\n",
       " ('showing', 348),\n",
       " ('miss', 347),\n",
       " ('dr', 347),\n",
       " ('christmas', 347),\n",
       " ('cover', 345),\n",
       " ('red', 344),\n",
       " ('sequences', 344),\n",
       " ('typical', 343),\n",
       " ('excuse', 343),\n",
       " ('crazy', 342),\n",
       " ('ideas', 342),\n",
       " ('baby', 342),\n",
       " ('loved', 341),\n",
       " ('meant', 341),\n",
       " ('worked', 340),\n",
       " ('fire', 340),\n",
       " ('unbelievable', 339),\n",
       " ('follow', 339),\n",
       " ('theme', 337),\n",
       " ('barely', 336),\n",
       " ('producers', 336),\n",
       " ('twist', 336),\n",
       " ('plus', 336),\n",
       " ('appear', 336),\n",
       " ('directors', 335),\n",
       " ('team', 335),\n",
       " ('viewers', 333),\n",
       " ('leads', 332),\n",
       " ('tom', 332),\n",
       " ('slasher', 332),\n",
       " ('wrote', 331),\n",
       " ('villain', 331),\n",
       " ('gun', 331),\n",
       " ('working', 331),\n",
       " ('island', 330),\n",
       " ('strong', 330),\n",
       " ('open', 330),\n",
       " ('realize', 330),\n",
       " ('positive', 329),\n",
       " ('disappointing', 329),\n",
       " ('yeah', 329),\n",
       " ('quickly', 329),\n",
       " ('weren', 328),\n",
       " ('release', 328),\n",
       " ('simple', 328),\n",
       " ('honestly', 328),\n",
       " ('eventually', 327),\n",
       " ('period', 327),\n",
       " ('tells', 327),\n",
       " ('kills', 327),\n",
       " ('doctor', 327),\n",
       " ('nowhere', 326),\n",
       " ('list', 326),\n",
       " ('acted', 326),\n",
       " ('herself', 326),\n",
       " ('dog', 326),\n",
       " ('walk', 325),\n",
       " ('air', 324),\n",
       " ('apart', 324),\n",
       " ('makers', 323),\n",
       " ('subject', 323),\n",
       " ('learn', 322),\n",
       " ('fi', 322),\n",
       " ('sci', 319),\n",
       " ('bother', 319),\n",
       " ('admit', 319),\n",
       " ('jack', 318),\n",
       " ('disappointment', 318),\n",
       " ('hands', 318),\n",
       " ('note', 318),\n",
       " ('certain', 317),\n",
       " ('e', 317),\n",
       " ('value', 317),\n",
       " ('casting', 317),\n",
       " ('grade', 316),\n",
       " ('peter', 316),\n",
       " ('suddenly', 315),\n",
       " ('missing', 315),\n",
       " ('form', 313),\n",
       " ('stick', 313),\n",
       " ('previous', 313),\n",
       " ('break', 313),\n",
       " ('soundtrack', 312),\n",
       " ('surprised', 311),\n",
       " ('front', 311),\n",
       " ('expecting', 311),\n",
       " ('parents', 310),\n",
       " ('surprise', 310),\n",
       " ('relationship', 310),\n",
       " ('shoot', 309),\n",
       " ('today', 309),\n",
       " ('painful', 308),\n",
       " ('ways', 308),\n",
       " ('leaves', 308),\n",
       " ('ended', 308),\n",
       " ('creepy', 308),\n",
       " ('concept', 308),\n",
       " ('somewhere', 308),\n",
       " ('vampire', 308),\n",
       " ('spend', 307),\n",
       " ('th', 307),\n",
       " ('future', 306),\n",
       " ('difficult', 306),\n",
       " ('effect', 306),\n",
       " ('fighting', 306),\n",
       " ('street', 306),\n",
       " ('c', 305),\n",
       " ('america', 305),\n",
       " ('accent', 304),\n",
       " ('truth', 302),\n",
       " ('project', 302),\n",
       " ('joe', 301),\n",
       " ('f', 301),\n",
       " ('deal', 301),\n",
       " ('indeed', 301),\n",
       " ('biggest', 300),\n",
       " ('rate', 300),\n",
       " ('paul', 299),\n",
       " ('japanese', 299),\n",
       " ('utterly', 298),\n",
       " ('begins', 298),\n",
       " ('redeeming', 298),\n",
       " ('college', 298),\n",
       " ('york', 297),\n",
       " ('fairly', 297),\n",
       " ('disney', 297),\n",
       " ('crew', 296),\n",
       " ('create', 296),\n",
       " ('cartoon', 296),\n",
       " ('revenge', 296),\n",
       " ('co', 295),\n",
       " ('outside', 295),\n",
       " ('computer', 295),\n",
       " ('interested', 295),\n",
       " ('stage', 295),\n",
       " ('considering', 294),\n",
       " ('speak', 294),\n",
       " ('among', 294),\n",
       " ('towards', 293),\n",
       " ('channel', 293),\n",
       " ('sick', 293),\n",
       " ('talented', 292),\n",
       " ('cause', 292),\n",
       " ('particular', 292),\n",
       " ('van', 292),\n",
       " ('hair', 292),\n",
       " ('bottom', 291),\n",
       " ('reasons', 291),\n",
       " ('mediocre', 290),\n",
       " ('cat', 290),\n",
       " ('telling', 290),\n",
       " ('supporting', 289),\n",
       " ('store', 289),\n",
       " ('hoping', 288),\n",
       " ('waiting', 288),\n",
       " ...]"
      ]
     },
     "execution_count": 9,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# Examine the counts of the most common words in negative reviews\n",
    "negative_counts.most_common()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "As you can see, common words like \"the\" appear very often in both positive and negative reviews. Instead of finding the most common words in positive or negative reviews, what you really want are the words found in positive reviews more often than in negative reviews, and vice versa. To accomplish this, you'll need to calculate the **ratios** of word usage between positive and negative reviews.\n",
    "\n",
    "**TODO:** Check all the words you've seen and calculate the ratio of postive to negative uses and store that ratio in `pos_neg_ratios`. \n",
    ">Hint: the positive-to-negative ratio for a given word can be calculated with `positive_counts[word] / float(negative_counts[word]+1)`. Notice the `+1` in the denominator – that ensures we don't divide by zero for words that are only seen in positive reviews."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "metadata": {},
   "outputs": [],
   "source": [
    "# Create Counter object to store positive/negative ratios\n",
    "pos_neg_ratios = Counter()\n",
    "\n",
    "# TODO: Calculate the ratios of positive and negative uses of the most common words\n",
    "#       Consider words to be \"common\" if they've been used at least 100 times\n",
    "for term,cnt in list(total_counts.most_common()):\n",
    "    if(cnt > 100):\n",
    "        pos_neg_ratio = positive_counts[term] / float(negative_counts[term]+1)\n",
    "        pos_neg_ratios[term] = pos_neg_ratio"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Examine the ratios you've calculated for a few words:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Pos-to-neg ratio for 'the' = 1.0607993145235326\n",
      "Pos-to-neg ratio for 'amazing' = 4.022813688212928\n",
      "Pos-to-neg ratio for 'terrible' = 0.17744252873563218\n"
     ]
    }
   ],
   "source": [
    "print(\"Pos-to-neg ratio for 'the' = {}\".format(pos_neg_ratios[\"the\"]))\n",
    "print(\"Pos-to-neg ratio for 'amazing' = {}\".format(pos_neg_ratios[\"amazing\"]))\n",
    "print(\"Pos-to-neg ratio for 'terrible' = {}\".format(pos_neg_ratios[\"terrible\"]))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Looking closely at the values you just calculated, we see the following:\n",
    "\n",
    "* Words that you would expect to see more often in positive reviews – like \"amazing\" – have a ratio greater than 1. The more skewed a word is toward postive, the farther from 1 its positive-to-negative ratio  will be.\n",
    "* Words that you would expect to see more often in negative reviews – like \"terrible\" – have positive values that are less than 1. The more skewed a word is toward negative, the closer to zero its positive-to-negative ratio will be.\n",
    "* Neutral words, which don't really convey any sentiment because you would expect to see them in all sorts of reviews – like \"the\" – have values very close to 1. A perfectly neutral word – one that was used in exactly the same number of positive reviews as negative reviews – would be almost exactly 1. The `+1` we suggested you add to the denominator slightly biases words toward negative, but it won't matter because it will be a tiny bias and later we'll be ignoring words that are too close to neutral anyway.\n",
    "\n",
    "Ok, the ratios tell us which words are used more often in postive or negative reviews, but the specific values we've calculated are a bit difficult to work with. A very positive word like \"amazing\" has a value above 4, whereas a very negative word like \"terrible\" has a value around 0.18. Those values aren't easy to compare for a couple of reasons:\n",
    "\n",
    "* Right now, 1 is considered neutral, but the absolute value of the postive-to-negative rations of very postive words is larger than the absolute value of the ratios for the very negative words. So there is no way to directly compare two numbers and see if one word conveys the same magnitude of positive sentiment as another word conveys negative sentiment. So we should center all the values around netural so the absolute value fro neutral of the postive-to-negative ratio for a word would indicate how much sentiment (positive or negative) that word conveys.\n",
    "* When comparing absolute values it's easier to do that around zero than one. \n",
    "\n",
    "To fix these issues, we'll convert all of our ratios to new values using logarithms.\n",
    "\n",
    "**TODO:** Go through all the ratios you calculated and convert them to logarithms. (i.e. use `np.log(ratio)`)\n",
    "\n",
    "In the end, extremely positive and extremely negative words will have positive-to-negative ratios with similar magnitudes but opposite signs."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "metadata": {},
   "outputs": [],
   "source": [
    "# TODO: Convert ratios to logs\n",
    "for word,ratio in pos_neg_ratios.most_common():\n",
    "    pos_neg_ratios[word] = np.log(ratio)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Examine the new ratios you've calculated for the same words from before:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Pos-to-neg ratio for 'the' = 0.05902269426102881\n",
      "Pos-to-neg ratio for 'amazing' = 1.3919815802404802\n",
      "Pos-to-neg ratio for 'terrible' = -1.7291085042663878\n"
     ]
    }
   ],
   "source": [
    "print(\"Pos-to-neg ratio for 'the' = {}\".format(pos_neg_ratios[\"the\"]))\n",
    "print(\"Pos-to-neg ratio for 'amazing' = {}\".format(pos_neg_ratios[\"amazing\"]))\n",
    "print(\"Pos-to-neg ratio for 'terrible' = {}\".format(pos_neg_ratios[\"terrible\"]))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "If everything worked, now you should see neutral words with values close to zero. In this case, \"the\" is near zero but slightly positive, so it was probably used in more positive reviews than negative reviews. But look at \"amazing\"'s ratio - it's above `1`, showing it is clearly a word with positive sentiment. And \"terrible\" has a similar score, but in the opposite direction, so it's below `-1`. It's now clear that both of these words are associated with specific, opposing sentiments.\n",
    "\n",
    "Now run the following cells to see more ratios. \n",
    "\n",
    "The first cell displays all the words, ordered by how associated they are with postive reviews. (Your notebook will most likely truncate the output so you won't actually see *all* the words in the list.)\n",
    "\n",
    "The second cell displays the 30 words most associated with negative reviews by reversing the order of the first list and then looking at the first 30 words. (If you want the second cell to display all the words, ordered by how associated they are with negative reviews, you could just write `reversed(pos_neg_ratios.most_common())`.)\n",
    "\n",
    "You should continue to see values similar to the earlier ones we checked – neutral words will be close to `0`, words will get more positive as their ratios approach and go above `1`, and words will get more negative as their ratios approach and go below `-1`. That's why we decided to use the logs instead of the raw ratios."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "[('edie', 4.6913478822291435),\n",
       " ('paulie', 4.07753744390572),\n",
       " ('felix', 3.152736022363656),\n",
       " ('polanski', 2.8233610476132043),\n",
       " ('matthau', 2.80672172860924),\n",
       " ('victoria', 2.681021528714291),\n",
       " ('mildred', 2.6026896854443837),\n",
       " ('gandhi', 2.538973871058276),\n",
       " ('flawless', 2.451005098112319),\n",
       " ('superbly', 2.26002547857525),\n",
       " ('perfection', 2.159484249353372),\n",
       " ('astaire', 2.1400661634962708),\n",
       " ('captures', 2.038619547159581),\n",
       " ('voight', 2.030170492673053),\n",
       " ('wonderfully', 2.0218960560332353),\n",
       " ('powell', 1.978345424808467),\n",
       " ('brosnan', 1.9547990964725592),\n",
       " ('lily', 1.9203768470501485),\n",
       " ('bakshi', 1.9029851043382795),\n",
       " ('lincoln', 1.9014583864844796),\n",
       " ('refreshing', 1.8551812956655511),\n",
       " ('breathtaking', 1.8481124057791867),\n",
       " ('bourne', 1.8478489358790986),\n",
       " ('lemmon', 1.8458266904983307),\n",
       " ('delightful', 1.8002701588959635),\n",
       " ('flynn', 1.7996646487351682),\n",
       " ('andrews', 1.7764919970972666),\n",
       " ('homer', 1.7692866133759964),\n",
       " ('beautifully', 1.7626953362841438),\n",
       " ('soccer', 1.7578579175523736),\n",
       " ('elvira', 1.739703107272002),\n",
       " ('underrated', 1.7197859696029656),\n",
       " ('gripping', 1.7165360479904674),\n",
       " ('superb', 1.7091514458966952),\n",
       " ('delight', 1.6714733033535532),\n",
       " ('welles', 1.667706820558076),\n",
       " ('sadness', 1.663505133704376),\n",
       " ('sinatra', 1.6389967146756448),\n",
       " ('touching', 1.637217476541176),\n",
       " ('timeless', 1.62924053973028),\n",
       " ('macy', 1.6211339521972916),\n",
       " ('unforgettable', 1.6177367152487956),\n",
       " ('favorites', 1.6158688027643908),\n",
       " ('stewart', 1.611998733295774),\n",
       " ('sullivan', 1.6094379124341003),\n",
       " ('extraordinary', 1.6094379124341003),\n",
       " ('hartley', 1.6094379124341003),\n",
       " ('brilliantly', 1.5950491749820008),\n",
       " ('friendship', 1.5677652160335325),\n",
       " ('wonderful', 1.5645425925262093),\n",
       " ('palma', 1.5553706911638245),\n",
       " ('magnificent', 1.54663701119507),\n",
       " ('finest', 1.546259010812569),\n",
       " ('jackie', 1.5439233053234738),\n",
       " ('ritter', 1.540445040947149),\n",
       " ('tremendous', 1.5184661342283736),\n",
       " ('freedom', 1.5091151908062312),\n",
       " ('fantastic', 1.5048433868558566),\n",
       " ('terrific', 1.5026699370083942),\n",
       " ('noir', 1.493925025312256),\n",
       " ('sidney', 1.493925025312256),\n",
       " ('outstanding', 1.4910053152089213),\n",
       " ('pleasantly', 1.4894785973551214),\n",
       " ('mann', 1.4894785973551214),\n",
       " ('nancy', 1.488077055429833),\n",
       " ('marie', 1.4825711915553104),\n",
       " ('marvelous', 1.4739999415389962),\n",
       " ('excellent', 1.4647538505723599),\n",
       " ('ruth', 1.4596256342054401),\n",
       " ('stanwyck', 1.4412101187160054),\n",
       " ('widmark', 1.4350845252893227),\n",
       " ('splendid', 1.4271163556401458),\n",
       " ('chan', 1.423108334242607),\n",
       " ('exceptional', 1.4201959127955721),\n",
       " ('tender', 1.410986973710262),\n",
       " ('gentle', 1.4078005663408544),\n",
       " ('poignant', 1.4022947024663317),\n",
       " ('gem', 1.3932148039644643),\n",
       " ('amazing', 1.3919815802404802),\n",
       " ('chilling', 1.3862943611198906),\n",
       " ('fisher', 1.3862943611198906),\n",
       " ('davies', 1.3862943611198906),\n",
       " ('captivating', 1.3862943611198906),\n",
       " ('darker', 1.3652409519220583),\n",
       " ('april', 1.349926716949016),\n",
       " ('kelly', 1.3461743673304654),\n",
       " ('blake', 1.3418425985490567),\n",
       " ('overlooked', 1.329135947279942),\n",
       " ('ralph', 1.32818673031261),\n",
       " ('bette', 1.3156767939059373),\n",
       " ('hoffman', 1.315066851831523),\n",
       " ('cole', 1.3121863889661687),\n",
       " ('shines', 1.3049487216659381),\n",
       " ('powerful', 1.2999662776313934),\n",
       " ('notch', 1.2950456896547455),\n",
       " ('remarkable', 1.2883688239495823),\n",
       " ('pitt', 1.286210902562908),\n",
       " ('winters', 1.2833463918674481),\n",
       " ('vivid', 1.2762934659055623),\n",
       " ('gritty', 1.2757524867200667),\n",
       " ('giallo', 1.274502955131774),\n",
       " ('portrait', 1.270462545594769),\n",
       " ('innocence', 1.2694300209805796),\n",
       " ('psychiatrist', 1.2685113254635072),\n",
       " ('favorite', 1.2668956297860055),\n",
       " ('ensemble', 1.2656663733312759),\n",
       " ('stunning', 1.2622417124499117),\n",
       " ('burns', 1.259880436264232),\n",
       " ('garbo', 1.258954938743289),\n",
       " ('barbara', 1.2580400255962119),\n",
       " ('philip', 1.252762968495368),\n",
       " ('panic', 1.252762968495368),\n",
       " ('holly', 1.252762968495368),\n",
       " ('carol', 1.2481440226390734),\n",
       " ('perfect', 1.246742480713785),\n",
       " ('appreciated', 1.2462482874741743),\n",
       " ('favourite', 1.2411123512753928),\n",
       " ('journey', 1.236762627148927),\n",
       " ('rural', 1.235471471385307),\n",
       " ('bond', 1.2321436812926323),\n",
       " ('builds', 1.2305398317106577),\n",
       " ('brilliant', 1.2287554137664785),\n",
       " ('brooklyn', 1.2286654169163074),\n",
       " ('von', 1.225175011976539),\n",
       " ('recommended', 1.2163953243244932),\n",
       " ('unfolds', 1.2163953243244932),\n",
       " ('daniel', 1.20215296760895),\n",
       " ('perfectly', 1.1971931173405572),\n",
       " ('crafted', 1.1962507582320256),\n",
       " ('prince', 1.1939224684724346),\n",
       " ('troubled', 1.192138346678933),\n",
       " ('consequences', 1.1865810616140668),\n",
       " ('haunting', 1.1814999484738773),\n",
       " ('cinderella', 1.180052620608284),\n",
       " ('alexander', 1.17599895228353),\n",
       " ('emotions', 1.1753049094563641),\n",
       " ('boxing', 1.1735135968412274),\n",
       " ('subtle', 1.173413501750808),\n",
       " ('curtis', 1.1649873576129823),\n",
       " ('rare', 1.1566438362402944),\n",
       " ('loved', 1.1563661500586044),\n",
       " ('daughters', 1.1526795099383853),\n",
       " ('courage', 1.1438688802562305),\n",
       " ('dentist', 1.1426722784621401),\n",
       " ('highly', 1.1420208631618658),\n",
       " ('nominated', 1.1409146683587992),\n",
       " ('tony', 1.139749194228599),\n",
       " ('draws', 1.132513840343791),\n",
       " ('everyday', 1.1306150197542835),\n",
       " ('contrast', 1.128465251817791),\n",
       " ('cried', 1.121340539745666),\n",
       " ('fabulous', 1.1210851445201684),\n",
       " ('ned', 1.120591195386885),\n",
       " ('fay', 1.120591195386885),\n",
       " ('emma', 1.1184149159642893),\n",
       " ('sensitive', 1.113318436057805),\n",
       " ('smooth', 1.1089750757036563),\n",
       " ('dramas', 1.1080910326226534),\n",
       " ('today', 1.1050431789984),\n",
       " ('helps', 1.1023091505494358),\n",
       " ('inspiring', 1.0986122886681098),\n",
       " ('jimmy', 1.0937696641923216),\n",
       " ('awesome', 1.0931328229034842),\n",
       " ('unique', 1.0881409888008142),\n",
       " ('tragic', 1.0871835928444868),\n",
       " ('intense', 1.0870514662670339),\n",
       " ('stellar', 1.0857088838322018),\n",
       " ('rival', 1.0822184788924332),\n",
       " ('provides', 1.079708134028957),\n",
       " ('depression', 1.0782034170369026),\n",
       " ('shy', 1.0775588794702773),\n",
       " ('carrie', 1.076139432816051),\n",
       " ('blend', 1.0753554265038423),\n",
       " ('hank', 1.0736109864626924),\n",
       " ('diana', 1.072636802264849),\n",
       " ('adorable', 1.072636802264849),\n",
       " ('unexpected', 1.0722255334949147),\n",
       " ('achievement', 1.0668635903535293),\n",
       " ('bettie', 1.0663514264498881),\n",
       " ('happiness', 1.0632729222228008),\n",
       " ('glorious', 1.0608719606852626),\n",
       " ('davis', 1.0541605260972757),\n",
       " ('terrifying', 1.0525211814678428),\n",
       " ('beauty', 1.050410186850232),\n",
       " ('ideal', 1.0479685558493548),\n",
       " ('fears', 1.0467872208035236),\n",
       " ('hong', 1.0438040521731147),\n",
       " ('seasons', 1.0433496099930604),\n",
       " ('fascinating', 1.0414538748281612),\n",
       " ('carries', 1.0345904299031787),\n",
       " ('satisfying', 1.0321225473992768),\n",
       " ('definite', 1.0319209141694374),\n",
       " ('touched', 1.0296194171811581),\n",
       " ('greatest', 1.0248947127715422),\n",
       " ('creates', 1.0241097613701886),\n",
       " ('aunt', 1.023388867430522),\n",
       " ('walter', 1.022328983918479),\n",
       " ('spectacular', 1.0198314108149955),\n",
       " ('portrayal', 1.0189810189761024),\n",
       " ('ann', 1.0127808528183286),\n",
       " ('enterprise', 1.0116009116784799),\n",
       " ('musicals', 1.0096648026516135),\n",
       " ('deeply', 1.0094845087721023),\n",
       " ('incredible', 1.0061677561461084),\n",
       " ('mature', 1.0060195018402847),\n",
       " ('triumph', 0.9968295943581673),\n",
       " ('margaret', 0.9968295943581673),\n",
       " ('navy', 0.9949338591932683),\n",
       " ('harry', 0.9917691930500606),\n",
       " ('lucas', 0.990398704027877),\n",
       " ('sweet', 0.9896611048795548),\n",
       " ('joey', 0.9879467207805901),\n",
       " ('oscar', 0.9872190511104971),\n",
       " ('balance', 0.9864949905474035),\n",
       " ('warm', 0.9848534033114517),\n",
       " ('ages', 0.9844989819006886),\n",
       " ('guilt', 0.9808292530117262),\n",
       " ('glover', 0.9808292530117262),\n",
       " ('carrey', 0.9808292530117262),\n",
       " ('learns', 0.978811088855489),\n",
       " ('unusual', 0.9778837427819693),\n",
       " ('sons', 0.977775815524836),\n",
       " ('complex', 0.977618977381478),\n",
       " ('essence', 0.9775343571148737),\n",
       " ('brazil', 0.9769153536905899),\n",
       " ('widow', 0.9765095918672099),\n",
       " ('solid', 0.9753796482441615),\n",
       " ('beautiful', 0.9732630126284105),\n",
       " ('holmes', 0.9724610033412096),\n",
       " ('awe', 0.9718605830289658),\n",
       " ('vhs', 0.9711673420999893),\n",
       " ('eerie', 0.9711673420999893),\n",
       " ('lonely', 0.9687372072466975),\n",
       " ('grim', 0.9687372072466975),\n",
       " ('sport', 0.9682504708048661),\n",
       " ('debut', 0.965080896043587),\n",
       " ('destiny', 0.963437510299857),\n",
       " ('thrillers', 0.9628107475090479),\n",
       " ('tears', 0.9597758438138939),\n",
       " ('rose', 0.9566420273977225),\n",
       " ('feelings', 0.9555114450274363),\n",
       " ('ginger', 0.9555114450274363),\n",
       " ('winning', 0.9547181090080405),\n",
       " ('stanley', 0.953873443023198),\n",
       " ('cox', 0.9534302788236119),\n",
       " ('paris', 0.9527847903047266),\n",
       " ('heart', 0.9523880692451681),\n",
       " ('hooked', 0.951558870711613),\n",
       " ('comfortable', 0.9480394301887354),\n",
       " ('mgm', 0.9444616088408515),\n",
       " ('masterpiece', 0.941550398633393),\n",
       " ('themes', 0.9411882834958823),\n",
       " ('danny', 0.9396711805182187),\n",
       " ('anime', 0.9337838893216722),\n",
       " ('perry', 0.9332883082427261),\n",
       " ('joy', 0.9330175256794686),\n",
       " ('lovable', 0.9308188324370649),\n",
       " ('mysteries', 0.9295359586241757),\n",
       " ('hal', 0.9295359586241757),\n",
       " ('louis', 0.9287132518727123),\n",
       " ('charming', 0.9252060955321074),\n",
       " ('urban', 0.9236708391717776),\n",
       " ('allows', 0.9218309122497704),\n",
       " ('impact', 0.9181581460489504),\n",
       " ('italy', 0.9162907318741551),\n",
       " ('gradually', 0.9162907318741551),\n",
       " ('lifestyle', 0.9162907318741551),\n",
       " ('spy', 0.9128951428730169),\n",
       " ('treat', 0.9119334265051994),\n",
       " ('subsequent', 0.9105600571651701),\n",
       " ('kennedy', 0.9098182173685376),\n",
       " ('loving', 0.9096754927554359),\n",
       " ('surprising', 0.9093702890295813),\n",
       " ('quiet', 0.9064867317775342),\n",
       " ('winter', 0.9062403960206536),\n",
       " ('reveals', 0.9049054096490298),\n",
       " ('raw', 0.9044562742271522),\n",
       " ('funniest', 0.9007865453381899),\n",
       " ('pleased', 0.8999415938726256),\n",
       " ('norman', 0.8999415938726256),\n",
       " ('thief', 0.8987464222232455),\n",
       " ('season', 0.8982722263714767),\n",
       " ('secrets', 0.8979415932059586),\n",
       " ('colorful', 0.8970593699462676),\n",
       " ('highest', 0.8967461358011849),\n",
       " ('compelling', 0.8946292350929758),\n",
       " ('danes', 0.8924800831804366),\n",
       " ('castle', 0.889677083356065),\n",
       " ('kudos', 0.8888917576860407),\n",
       " ('great', 0.8881047090146459),\n",
       " ('baseball', 0.8873031950009027),\n",
       " ('subtitles', 0.8873031950009027),\n",
       " ('bleak', 0.8873031950009027),\n",
       " ('winner', 0.8864377687244739),\n",
       " ('tragedy', 0.8856369907831526),\n",
       " ('todd', 0.8855190732074014),\n",
       " ('nicely', 0.879249460193806),\n",
       " ('arthur', 0.8754687373538999),\n",
       " ('essential', 0.8737311174553593),\n",
       " ('gorgeous', 0.8731725250935497),\n",
       " ('fonda', 0.8729402910005413),\n",
       " ('eastwood', 0.871395411966264),\n",
       " ('focuses', 0.8708283577973978),\n",
       " ('enjoyed', 0.8707019595162461),\n",
       " ('natural', 0.8699792450691284),\n",
       " ('intensity', 0.868351269585036),\n",
       " ('witty', 0.8682410342324468),\n",
       " ('rob', 0.8642954367557748),\n",
       " ('worlds', 0.8637726975907087),\n",
       " ('health', 0.861138911799075),\n",
       " ('magical', 0.8595379152817056),\n",
       " ('deeper', 0.8580218237501793),\n",
       " ('lucy', 0.8561868078044496),\n",
       " ('moving', 0.8556661100577203),\n",
       " ('lovely', 0.8529064000468131),\n",
       " ('purple', 0.8513711857748395),\n",
       " ('memorable', 0.8480118911208606),\n",
       " ('sings', 0.8472978603872037),\n",
       " ('craig', 0.8434293836092832),\n",
       " ('modesty', 0.8434293836092832),\n",
       " ('relate', 0.8432655968592652),\n",
       " ('episodes', 0.8422371208413729),\n",
       " ('strong', 0.8416713577706093),\n",
       " ('smith', 0.8395981110859005),\n",
       " ('tear', 0.8370413602200144),\n",
       " ('apartment', 0.8333311529054953),\n",
       " ('princess', 0.8329091229351039),\n",
       " ('disagree', 0.8329091229351039),\n",
       " ('kung', 0.831733343846092),\n",
       " ('adventure', 0.8315056139327839),\n",
       " ('columbo', 0.8266785731844679),\n",
       " ('jake', 0.8266785731844679),\n",
       " ('adds', 0.8248565259145232),\n",
       " ('hart', 0.8247235383486646),\n",
       " ('strength', 0.8241754429663494),\n",
       " ('realizes', 0.8236000689573806),\n",
       " ('dave', 0.8232003088081431),\n",
       " ('childhood', 0.8220808639358386),\n",
       " ('forbidden', 0.8198988861990891),\n",
       " ('tight', 0.818835395723442),\n",
       " ('surreal', 0.8178506590609026),\n",
       " ('manager', 0.8177099032017076),\n",
       " ('dancer', 0.8157495026522776),\n",
       " ('studios', 0.8109302162163288),\n",
       " ('con', 0.8109302162163288),\n",
       " ('miike', 0.8082165103447326),\n",
       " ('realistic', 0.8080771472339223),\n",
       " ('explicit', 0.8079226951523736),\n",
       " ('kurt', 0.8060875917405409),\n",
       " ('traditional', 0.8053591711668733),\n",
       " ('deals', 0.8053591711668733),\n",
       " ('holds', 0.8049385865480619),\n",
       " ('carl', 0.8043728156701697),\n",
       " ('touches', 0.8039615469002355),\n",
       " ('gene', 0.8031480757742738),\n",
       " ('albert', 0.8027669055771679),\n",
       " ('abc', 0.8023464725249373),\n",
       " ('cry', 0.8001193001121131),\n",
       " ('sides', 0.7995275841185171),\n",
       " ('develops', 0.7985076962177716),\n",
       " ('eyre', 0.7985076962177716),\n",
       " ('dances', 0.7969439742415889),\n",
       " ('oscars', 0.7963314167951762),\n",
       " ('legendary', 0.7960045659996531),\n",
       " ('hearted', 0.7949298748698876),\n",
       " ('importance', 0.7949298748698876),\n",
       " ('portraying', 0.7935659283069927),\n",
       " ('impressed', 0.7925810775481322),\n",
       " ('waters', 0.7911275889201491),\n",
       " ('empire', 0.7907856501238614),\n",
       " ('edge', 0.789774016249017),\n",
       " ('jean', 0.7884573603642703),\n",
       " ('environment', 0.7884573603642703),\n",
       " ('sentimental', 0.7864791203521645),\n",
       " ('captured', 0.7862376036259573),\n",
       " ('styles', 0.7859289140109116),\n",
       " ('daring', 0.7859289140109116),\n",
       " ('frank', 0.7827593392496325),\n",
       " ('tense', 0.7827593392496325),\n",
       " ('backgrounds', 0.7827593392496325),\n",
       " ('matches', 0.7827593392496325),\n",
       " ('gothic', 0.7820946665764414),\n",
       " ('sharp', 0.7814397877056235),\n",
       " ('achieved', 0.780158557549575),\n",
       " ('court', 0.7794752640484425),\n",
       " ('steals', 0.7789140023173704),\n",
       " ('rules', 0.7784447610718404),\n",
       " ('colors', 0.7768461994365922),\n",
       " ('reunion', 0.7731898882334817),\n",
       " ('covers', 0.7713993774596934),\n",
       " ('tale', 0.7701082216960737),\n",
       " ('rain', 0.7683706017975328),\n",
       " ('denzel', 0.768048488733063),\n",
       " ('stays', 0.7678707267558819),\n",
       " ('blob', 0.7672551527136672),\n",
       " ('maria', 0.7621400520468967),\n",
       " ('conventional', 0.7621400520468967),\n",
       " ('fresh', 0.7615843421131738),\n",
       " ('midnight', 0.7609697768987064),\n",
       " ('landscape', 0.758529939822797),\n",
       " ('animated', 0.7576857016975165),\n",
       " ('titanic', 0.7566605862822713),\n",
       " ('sunday', 0.7566605862822713),\n",
       " ('spring', 0.7537718023763802),\n",
       " ('cagney', 0.7537718023763802),\n",
       " ('enjoyable', 0.7524637577163648),\n",
       " ('immensely', 0.7519876805828787),\n",
       " ('sir', 0.7507762933965817),\n",
       " ('nevertheless', 0.7506710246981319),\n",
       " ('driven', 0.7499447789530785),\n",
       " ('performances', 0.7488325251606314),\n",
       " ('memories', 0.7472144018302211),\n",
       " ('nowadays', 0.7472144018302211),\n",
       " ('simple', 0.7464142097414326),\n",
       " ('golden', 0.7453329337305156),\n",
       " ('leslie', 0.7453329337305156),\n",
       " ('lovers', 0.7449722484245312),\n",
       " ('relationship', 0.7448423234560179),\n",
       " ('supporting', 0.7435780341868372),\n",
       " ('che', 0.742627237823315),\n",
       " ('packed', 0.7410032017375805),\n",
       " ('trek', 0.7402146914179311),\n",
       " ('provoking', 0.7384037721480662),\n",
       " ('strikes', 0.7375989431307791),\n",
       " ('depiction', 0.736822244062607),\n",
       " ('emotional', 0.7367821164568152),\n",
       " ('secretary', 0.7366322924996842),\n",
       " ('influenced', 0.7351113796589775),\n",
       " ('florida', 0.7351113796589775),\n",
       " ('germany', 0.7328875092094594),\n",
       " ('brings', 0.7314293671309623),\n",
       " ('lewis', 0.7312989465243216),\n",
       " ('elderly', 0.7308875085427924),\n",
       " ('owner', 0.7274362540385775),\n",
       " ('streets', 0.726669872598589),\n",
       " ('henry', 0.7264219694448174),\n",
       " ('portrays', 0.7259370033829363),\n",
       " ('bears', 0.7252354951114458),\n",
       " ('china', 0.7248958788745256),\n",
       " ('anger', 0.7243997240640498),\n",
       " ('society', 0.7243301079966333),\n",
       " ('available', 0.7241574173025055),\n",
       " ('best', 0.7234703406044631),\n",
       " ('bugs', 0.7227059828014898),\n",
       " ('magic', 0.718789611173283),\n",
       " ('delivers', 0.7184649885442351),\n",
       " ('verhoeven', 0.7184649885442351),\n",
       " ('jim', 0.7178397931503168),\n",
       " ('donald', 0.7166776779701394),\n",
       " ('endearing', 0.714653385780909),\n",
       " ('relationships', 0.713937950229019),\n",
       " ('greatly', 0.7125652664170469),\n",
       " ('charlie', 0.7102416139192453),\n",
       " ('brad', 0.7102416139192453),\n",
       " ('simon', 0.7096764825111558),\n",
       " ('effectively', 0.7091475219063864),\n",
       " ('march', 0.7077459799810979),\n",
       " ('atmosphere', 0.7074477307021416),\n",
       " ('influence', 0.7073318155519017),\n",
       " ('genius', 0.706392407309966),\n",
       " ('emotionally', 0.7055697005585024),\n",
       " ('ken', 0.7052685410922901),\n",
       " ('identity', 0.7048432203231365),\n",
       " ('sophisticated', 0.7047080029610213),\n",
       " ('dan', 0.7045758763835681),\n",
       " ('andrew', 0.7032995520239632),\n",
       " ('india', 0.7014459833746404),\n",
       " ('roy', 0.6997045811061043),\n",
       " ('surprisingly', 0.6995780708902356),\n",
       " ('sky', 0.6978091936657567),\n",
       " ('romantic', 0.6966498111111474),\n",
       " ('match', 0.6956692499926552),\n",
       " ('meets', 0.6931471805599453),\n",
       " ('cowboy', 0.6931471805599453),\n",
       " ('wave', 0.6931471805599453),\n",
       " ('bitter', 0.6931471805599453),\n",
       " ('patient', 0.6931471805599453),\n",
       " ('stylish', 0.6931471805599453),\n",
       " ('britain', 0.6931471805599453),\n",
       " ('affected', 0.6931471805599453),\n",
       " ('beatty', 0.6931471805599453),\n",
       " ('love', 0.6919853354193732),\n",
       " ('paul', 0.6898082792944307),\n",
       " ('andy', 0.688463331247519),\n",
       " ('performance', 0.6879738632797247),\n",
       " ('patrick', 0.6864581924091486),\n",
       " ('unlike', 0.6854646843879291),\n",
       " ('brooks', 0.6843365508777904),\n",
       " ('refuses', 0.6834852696482084),\n",
       " ('award', 0.6824518914431974),\n",
       " ('complaint', 0.6824518914431974),\n",
       " ('ride', 0.6822971645358795),\n",
       " ('dawson', 0.6817184847363226),\n",
       " ('luke', 0.6815863581588694),\n",
       " ('wells', 0.680877087968131),\n",
       " ('france', 0.6804081547825156),\n",
       " ('sports', 0.6800750989925926),\n",
       " ('handsome', 0.6800750989925926),\n",
       " ('directs', 0.6787584431078457),\n",
       " ('rebel', 0.6787584431078457),\n",
       " ('greater', 0.6760527472006452),\n",
       " ('dreams', 0.6759941013336959),\n",
       " ('effective', 0.6756540231124281),\n",
       " ('interpretation', 0.6747980418917487),\n",
       " ('works', 0.6744550475477928),\n",
       " ('brando', 0.6744550475477928),\n",
       " ('noble', 0.6737290947028437),\n",
       " ('paced', 0.6731465138532757),\n",
       " ('le', 0.6706743247078867),\n",
       " ('master', 0.6701576623352465),\n",
       " ('h', 0.6696166831497512),\n",
       " ('rings', 0.6690496289808848),\n",
       " ('easy', 0.6689599549459415),\n",
       " ('city', 0.6682082322126932),\n",
       " ('sunshine', 0.6678293725756554),\n",
       " ('succeeds', 0.666478933477784),\n",
       " ('relations', 0.664159643686693),\n",
       " ('england', 0.663876798259832),\n",
       " ('glimpse', 0.6632942174102642),\n",
       " ('aired', 0.6626879730752367),\n",
       " ('sees', 0.6626316366339948),\n",
       " ('both', 0.66248336767383),\n",
       " ('definitely', 0.6619978948389881),\n",
       " ('imaginative', 0.661398482245365),\n",
       " ('appreciate', 0.6608389373272875),\n",
       " ('tricks', 0.6607119048067914),\n",
       " ('striking', 0.6607119048067914),\n",
       " ('carefully', 0.6599949732430448),\n",
       " ('complicated', 0.6598107602923535),\n",
       " ('perspective', 0.6596244885213017),\n",
       " ('trilogy', 0.6587795370557376),\n",
       " ('future', 0.6583466514105283),\n",
       " ('lion', 0.6574290979578661),\n",
       " ('douglas', 0.6554068525770982),\n",
       " ('victor', 0.6554068525770982),\n",
       " ('inspired', 0.6545985104427103),\n",
       " ('marriage', 0.653926467406664),\n",
       " ('demands', 0.653926467406664),\n",
       " ('father', 0.6517232167219466),\n",
       " ('page', 0.6512362849443085),\n",
       " ('instant', 0.6505875661411494),\n",
       " ('era', 0.6495567444850836),\n",
       " ('ruthless', 0.6493445579015524),\n",
       " ('saga', 0.6493445579015524),\n",
       " ('joan', 0.6489139255831198),\n",
       " ('joseph', 0.6484112867185539),\n",
       " ('workers', 0.6482966143945935),\n",
       " ('fantasy', 0.6472675748092517),\n",
       " ('distant', 0.6455191315706907),\n",
       " ('accomplished', 0.6455191315706907),\n",
       " ('manhattan', 0.6443570163905132),\n",
       " ('personal', 0.6435502394205732),\n",
       " ('meeting', 0.6431367599852839),\n",
       " ('individual', 0.6431367599852839),\n",
       " ('pushing', 0.6431367599852839),\n",
       " ('pleasant', 0.6425034477411904),\n",
       " ('brave', 0.6418538861723947),\n",
       " ('william', 0.6408313911957847),\n",
       " ('hudson', 0.6407791950426294),\n",
       " ('friendly', 0.6394944670676251),\n",
       " ('eccentric', 0.6390799592896695),\n",
       " ('awards', 0.6387531084941465),\n",
       " ('jack', 0.6383830951499704),\n",
       " ('seeking', 0.6380874033769178),\n",
       " ('divorce', 0.6375773294051346),\n",
       " ('colonel', 0.6375773294051346),\n",
       " ('jane', 0.6344395797331673),\n",
       " ('keeping', 0.6341488397979895),\n",
       " ('gives', 0.6338356815949788),\n",
       " ('ted', 0.633427945858323),\n",
       " ('animation', 0.632086923798699),\n",
       " ('progress', 0.6317782341836532),\n",
       " ('larger', 0.6312717768418578),\n",
       " ('concert', 0.6312717768418578),\n",
       " ('nation', 0.6296337748376194),\n",
       " ('albeit', 0.6273958029971649),\n",
       " ('adapted', 0.6261364702769852),\n",
       " ('discovers', 0.6254290065049944),\n",
       " ('classic', 0.6250495642805052),\n",
       " ('segment', 0.6233514186244034),\n",
       " ('morgan', 0.6230376143729187),\n",
       " ('mouse', 0.6229429218866968),\n",
       " ('impressive', 0.6221114074431935),\n",
       " ('artist', 0.6216882165778004),\n",
       " ('ultimate', 0.6216882165778004),\n",
       " ('griffith', 0.621173680934856),\n",
       " ('drew', 0.6208265189803192),\n",
       " ('emily', 0.6208265189803192),\n",
       " ('moved', 0.6197197120051281),\n",
       " ('families', 0.6190392084062235),\n",
       " ('profound', 0.6190392084062235),\n",
       " ('innocent', 0.6185121991713645),\n",
       " ('versions', 0.6173091041684409),\n",
       " ('eddie', 0.6169198151720611),\n",
       " ('criticism', 0.6165139545390294),\n",
       " ('nature', 0.6159451465319409),\n",
       " ('recognized', 0.6151856390902335),\n",
       " ('sexuality', 0.6146755651184501),\n",
       " ('contract', 0.6140098600012215),\n",
       " ('brian', 0.6134404379492028),\n",
       " ('remembered', 0.6131044728864089),\n",
       " ('determined', 0.6123858239154869),\n",
       " ('offers', 0.6120793574711635),\n",
       " ('pleasure', 0.611957025829932),\n",
       " ('washington', 0.6118015411059929),\n",
       " ('images', 0.6115973135958376),\n",
       " ('games', 0.6106709587357068),\n",
       " ('academy', 0.6087298387473621),\n",
       " ('fashioned', 0.6079893722196384),\n",
       " ('melodrama', 0.6074917359814515),\n",
       " ('rough', 0.6061358035703155),\n",
       " ('charismatic', 0.6061358035703155),\n",
       " ('peoples', 0.6061358035703155),\n",
       " ('dealing', 0.6051784076139881),\n",
       " ('fine', 0.604969622680133),\n",
       " ('tap', 0.6039160468320027),\n",
       " ('trio', 0.6015799870344548),\n",
       " ('russell', 0.6012096852342597),\n",
       " ('figures', 0.6007738604289301),\n",
       " ('ward', 0.6000567574939334),\n",
       " ('shine', 0.5991182309116689),\n",
       " ('brady', 0.5991182309116689),\n",
       " ('job', 0.5984556212516866),\n",
       " ('satisfied', 0.5965203448708737),\n",
       " ('river', 0.5963796286249509),\n",
       " ('brown', 0.595773016534769),\n",
       " ('believable', 0.595660721333025),\n",
       " ('always', 0.5947071077466928),\n",
       " ('bound', 0.5947071077466928),\n",
       " ('hall', 0.5933967777928858),\n",
       " ('cook', 0.5916777203950857),\n",
       " ('claire', 0.5913644862500029),\n",
       " ('broadway', 0.5903376866937243),\n",
       " ('anna', 0.5877866649021191),\n",
       " ('peace', 0.5862840350175841),\n",
       " ('visually', 0.5853943192634992),\n",
       " ('morality', 0.5852582185487603),\n",
       " ('falk', 0.5852582185487603),\n",
       " ('growing', 0.5846665375658754),\n",
       " ('experiences', 0.5831462853456169),\n",
       " ('stood', 0.5831462853456169),\n",
       " ('touch', 0.58122926435596),\n",
       " ('lives', 0.5810976767513224),\n",
       " ('kubrick', 0.5806691971332549),\n",
       " ('timing', 0.5804740180558324),\n",
       " ('expressions', 0.5798184952529422),\n",
       " ('struggles', 0.5798184952529422),\n",
       " ('authentic', 0.5784842722398056),\n",
       " ('helen', 0.5776342934381009),\n",
       " ('pre', 0.5770075306472918),\n",
       " ('quirky', 0.5753641449035618),\n",
       " ('young', 0.5753167234453431),\n",
       " ('inner', 0.5745414381520985),\n",
       " ('mexico', 0.5744308737205633),\n",
       " ('clint', 0.5738004229273791),\n",
       " ('sisters', 0.5728610146854434),\n",
       " ('realism', 0.5722652889994956),\n",
       " ('french', 0.5720692490067093),\n",
       " ('personalities', 0.5720692490067093),\n",
       " ('surprises', 0.5711322299969818),\n",
       " ('adventures', 0.5711322299969818),\n",
       " ('overcome', 0.5697681593994407),\n",
       " ('timothy', 0.5695332245927687),\n",
       " ('tales', 0.5690945318899664),\n",
       " ('war', 0.5684331730278168),\n",
       " ('civil', 0.5679840376059393),\n",
       " ('countries', 0.5673777932709119),\n",
       " ('streep', 0.5671064596645803),\n",
       " ('tradition', 0.5668534552356532),\n",
       " ('oliver', 0.5667332557042867),\n",
       " ('australia', 0.5658077581833438),\n",
       " ('understanding', 0.5653138090500605),\n",
       " ('players', 0.5650952537000482),\n",
       " ('knowing', 0.5648928450362665),\n",
       " ('rogers', 0.5642134971840521),\n",
       " ('suspenseful', 0.5636891133230585),\n",
       " ('variety', 0.5636891133230585),\n",
       " ('true', 0.5628152518081007),\n",
       " ('jr', 0.5622098231124694),\n",
       " ('psychological', 0.5610874585468789),\n",
       " ('sent', 0.5596157879354227),\n",
       " ('grand', 0.5596157879354227),\n",
       " ('branagh', 0.5596157879354227),\n",
       " ('reminiscent', 0.5596157879354227),\n",
       " ('performing', 0.5596157879354227),\n",
       " ('wealth', 0.5596157879354227),\n",
       " ('overwhelming', 0.5596157879354227),\n",
       " ('odds', 0.5596157879354227),\n",
       " ('brothers', 0.5589118104336285),\n",
       " ('howard', 0.5581108967560025),\n",
       " ('david', 0.5569312225647537),\n",
       " ('generation', 0.556287997842748),\n",
       " ('grow', 0.5561253829956542),\n",
       " ('survival', 0.5559460590464603),\n",
       " ('mainstream', 0.5557473111575023),\n",
       " ('dick', 0.5543107357057295),\n",
       " ('charm', 0.5528817557540786),\n",
       " ('kirk', 0.5527898228650229),\n",
       " ('twists', 0.5524472984568102),\n",
       " ('gangster', 0.5520685823000399),\n",
       " ('jeff', 0.5517930622542137),\n",
       " ('family', 0.5511624451006553),\n",
       " ('tend', 0.5505330733611034),\n",
       " ('thanks', 0.5504908801584222),\n",
       " ('world', 0.5474423472343264),\n",
       " ('sutherland', 0.5474353693785516),\n",
       " ('life', 0.5469551443495992),\n",
       " ('disc', 0.5465437063680699),\n",
       " ('bug', 0.5465437063680699),\n",
       " ('tribute', 0.5455111817538808),\n",
       " ('europe', 0.5452270504833231),\n",
       " ('sacrifice', 0.5443015529623801),\n",
       " ('color', 0.5440512713943111),\n",
       " ('superior', 0.5433349023312852),\n",
       " ('york', 0.5431823586653651),\n",
       " ('pulls', 0.5426662296216495),\n",
       " ('jackson', 0.5423242908253617),\n",
       " ('hearts', 0.5423242908253617),\n",
       " ('enjoy', 0.5412428513590611),\n",
       " ('redemption', 0.5405675929647282),\n",
       " ('madness', 0.540384426007535),\n",
       " ('stands', 0.5389965007326869),\n",
       " ('trial', 0.5389965007326869),\n",
       " ('greek', 0.5389965007326869),\n",
       " ('hamilton', 0.5389965007326869),\n",
       " ('each', 0.5388212312554177),\n",
       " ('faithful', 0.5377330766859151),\n",
       " ('received', 0.5372768098531604),\n",
       " ('documentaries', 0.537142932083364),\n",
       " ('jealous', 0.537142932083364),\n",
       " ('different', 0.5370986068246082),\n",
       " ('describes', 0.5368011101692514),\n",
       " ('shorts', 0.5359615970375329),\n",
       " ('brilliance', 0.5355182363563621),\n",
       " ('mountains', 0.5349231753450512),\n",
       " ('share', 0.5340824859302579),\n",
       " ('dealt', 0.5340824859302579),\n",
       " ('providing', 0.5332984796180493),\n",
       " ('explore', 0.5332984796180493),\n",
       " ('series', 0.5325809226575603),\n",
       " ('fellow', 0.5323318289869543),\n",
       " ('loves', 0.5306282510621704),\n",
       " ('revolution', 0.5306282510621704),\n",
       " ('olivier', 0.5306282510621704),\n",
       " ('roman', 0.5306282510621704),\n",
       " ('century', 0.5300278307499267),\n",
       " ('musical', 0.5296687115674706),\n",
       " ('heroic', 0.5292593254548287),\n",
       " ('approach', 0.5280674302004967),\n",
       " ('ironically', 0.5280674302004967),\n",
       " ('temple', 0.5280674302004967),\n",
       " ('moves', 0.5279372642387119),\n",
       " ('gift', 0.5270203096859714),\n",
       " ('julie', 0.5260930958967791),\n",
       " ('tells', 0.52415107836314),\n",
       " ('radio', 0.5239467117286878),\n",
       " ('uncle', 0.5235443961737654),\n",
       " ('union', 0.5232481437645479),\n",
       " ('deep', 0.523095716357805),\n",
       " ('reminds', 0.5215784155422524),\n",
       " ('famous', 0.5211884108015372),\n",
       " ('jazz', 0.5205344378929515),\n",
       " ('dennis', 0.5198754592859086),\n",
       " ('epic', 0.5191938734365074),\n",
       " ('adult', 0.519167695083386),\n",
       " ('shows', 0.519153222203753),\n",
       " ('performed', 0.5191244265806858),\n",
       " ('demons', 0.5191244265806858),\n",
       " ('discovered', 0.5187937934151675),\n",
       " ('eric', 0.5187937934151675),\n",
       " ('youth', 0.5185626062681431),\n",
       " ('human', 0.5185141122498709),\n",
       " ('tarzan', 0.5181382706122772),\n",
       " ('ourselves', 0.5179430915348546),\n",
       " ('wwii', 0.5175824062288704),\n",
       " ('passion', 0.5162164724008671),\n",
       " ('desire', 0.5160749796521344),\n",
       " ('pays', 0.5158131652770298),\n",
       " ('dirty', 0.5155762265245886),\n",
       " ('fox', 0.5155762265245886),\n",
       " ('sympathetic', 0.5154660033224929),\n",
       " ('symbolism', 0.5154660033224929),\n",
       " ('attitude', 0.5153099362133193),\n",
       " ('appearances', 0.5146644000731564),\n",
       " ('jeremy', 0.5146644000731564),\n",
       " ('fun', 0.5143906899304869),\n",
       " ('south', 0.5142097217502312),\n",
       " ('arrives', 0.5140989491109599),\n",
       " ('present', 0.5134196589430373),\n",
       " ('com', 0.5132616785638717),\n",
       " ('smile', 0.5126588048476517),\n",
       " ('alan', 0.5108256237659907),\n",
       " ('ring', 0.5108256237659907),\n",
       " ('visit', 0.5108256237659907),\n",
       " ('fits', 0.5108256237659907),\n",
       " ('provided', 0.5108256237659907),\n",
       " ('carter', 0.5108256237659907),\n",
       " ('aging', 0.5108256237659907),\n",
       " ('countryside', 0.5108256237659907),\n",
       " ('begins', 0.5101565036339665),\n",
       " ('success', 0.5090057870490047),\n",
       " ('japan', 0.5090057870490047),\n",
       " ('accurate', 0.5089547158301789),\n",
       " ('proud', 0.5080047474243493),\n",
       " ('daily', 0.5075946031845443),\n",
       " ('karloff', 0.5072478024181067),\n",
       " ('atmospheric', 0.5072478024181067),\n",
       " ('recently', 0.5071491490366821),\n",
       " ('fu', 0.5070449009260847),\n",
       " ('horrors', 0.5065612249795332),\n",
       " ('finding', 0.5063712734166104),\n",
       " ('lust', 0.5059356384717989),\n",
       " ('hitchcock', 0.50574947073413),\n",
       " ('among', 0.5033400495133273),\n",
       " ('viewing', 0.5030213982744091),\n",
       " ('investigation', 0.5026288565618122),\n",
       " ('shining', 0.5026288565618122),\n",
       " ('duo', 0.5020919437972361),\n",
       " ('cameron', 0.5020919437972361),\n",
       " ('finds', 0.501283031005398),\n",
       " ('contemporary', 0.5007752879124892),\n",
       " ('genuine', 0.500462836730444),\n",
       " ('frightening', 0.49995595152908684),\n",
       " ('plays', 0.49975983848890226),\n",
       " ('age', 0.49941323171424595),\n",
       " ('position', 0.4989911661189878),\n",
       " ('continues', 0.4986303506721724),\n",
       " ('roles', 0.4983971655075218),\n",
       " ('james', 0.498372162694704),\n",
       " ('individuals', 0.4982468415591305),\n",
       " ('brought', 0.49783842823917956),\n",
       " ('hilarious', 0.4971455198619106),\n",
       " ('brutal', 0.49681488669639234),\n",
       " ('appropriate', 0.49643688631389105),\n",
       " ('dance', 0.4958199831481205),\n",
       " ('league', 0.49578774640145024),\n",
       " ('helping', 0.49578774640145024),\n",
       " ('answers', 0.49578774640145024),\n",
       " ('stunts', 0.49561620510246196),\n",
       " ('traveling', 0.4953214372300254),\n",
       " ('thoroughly', 0.49414593456733524),\n",
       " ('depicted', 0.4931706885272699),\n",
       " ('combination', 0.49247648509779424),\n",
       " ('honor', 0.49247648509779424),\n",
       " ('differences', 0.49247648509779424),\n",
       " ('fully', 0.4921334907538381),\n",
       " ('tracy', 0.49159426183810306),\n",
       " ('battles', 0.4914075379088891),\n",
       " ('possibility', 0.4911205526866582),\n",
       " ('romance', 0.4901589869574316),\n",
       " ('initially', 0.49002249613622745),\n",
       " ('happy', 0.4898997500608791),\n",
       " ('crime', 0.48977221456815834),\n",
       " ('singing', 0.4893852925281213),\n",
       " ('especially', 0.48901267837860624),\n",
       " ('shakespeare', 0.4875479388966451),\n",
       " ('hugh', 0.4872951263557966),\n",
       " ('detail', 0.4860948425082735),\n",
       " ('julia', 0.4855078157817008),\n",
       " ('san', 0.4855078157817008),\n",
       " ('guide', 0.4855078157817008),\n",
       " ('desperation', 0.4855078157817008),\n",
       " ('companion', 0.4855078157817008),\n",
       " ('strongly', 0.48460242866688824),\n",
       " ('necessary', 0.48302334245403883),\n",
       " ('humanity', 0.48265474679929443),\n",
       " ('drama', 0.48221998493060503),\n",
       " ('nonetheless', 0.4818380868927384),\n",
       " ('intrigue', 0.4818380868927384),\n",
       " ('warming', 0.4818380868927384),\n",
       " ('cuba', 0.4818380868927384),\n",
       " ('planned', 0.4795730802618863),\n",
       " ('pictures', 0.4792993701192168),\n",
       " ('broadcast', 0.4784902431230542),\n",
       " ('nine', 0.47803580094299974),\n",
       " ('settings', 0.47743860773325364),\n",
       " ('history', 0.4773296693378085),\n",
       " ('ordinary', 0.4772588001269074),\n",
       " ('trade', 0.47692407209030935),\n",
       " ('official', 0.4760826753221178),\n",
       " ('primary', 0.4760826753221178),\n",
       " ('episode', 0.4752962026115043),\n",
       " ('role', 0.47520268270188676),\n",
       " ('spirit', 0.4747769079983932),\n",
       " ('grey', 0.4740936144972607),\n",
       " ('ways', 0.47323464982718205),\n",
       " ('cup', 0.472604410945793),\n",
       " ('piano', 0.472604410945793),\n",
       " ('familiar', 0.4724161756511195),\n",
       " ('sinister', 0.4719857904497268),\n",
       " ('reveal', 0.47171449364936496),\n",
       " ('max', 0.4715085204251558),\n",
       " ('dated', 0.4712164856709448),\n",
       " ('losing', 0.47000362924573563),\n",
       " ('discovery', 0.47000362924573563),\n",
       " ('vicious', 0.47000362924573563),\n",
       " ('genuinely', 0.46871413841586385),\n",
       " ('hatred', 0.46734051182625186),\n",
       " ('mistaken', 0.4670230011075978),\n",
       " ('dream', 0.46608972992459924),\n",
       " ('challenge', 0.46608972992459924),\n",
       " ('crisis', 0.46575733836428446),\n",
       " ('photographed', 0.4648885285789651),\n",
       " ('critics', 0.4643056081310978),\n",
       " ('bird', 0.4643056081310978),\n",
       " ('machines', 0.4643056081310978),\n",
       " ('born', 0.4641138351896721),\n",
       " ('detective', 0.4636633473511525),\n",
       " ('higher', 0.46328467899699055),\n",
       " ('remains', 0.46262352194811296),\n",
       " ('inevitable', 0.46262352194811296),\n",
       " ('soviet', 0.4618180446592961),\n",
       " ('ryan', 0.461345566502621),\n",
       " ('african', 0.46112595521371813),\n",
       " ('smaller', 0.46081520319132935),\n",
       " ('techniques', 0.46052488529119184),\n",
       " ('information', 0.4603417183339986),\n",
       " ('deserved', 0.45999798712841444),\n",
       " ('lynch', 0.45953232937844013),\n",
       " ('spielberg', 0.45953232937844013),\n",
       " ('cynical', 0.45953232937844013),\n",
       " ('tour', 0.45953232937844013),\n",
       " ('francisco', 0.45953232937844013),\n",
       " ('struggle', 0.45911782160048453),\n",
       " ('language', 0.4590212125771265),\n",
       " ('visual', 0.4582351440882285),\n",
       " ('warner', 0.45724137763188427),\n",
       " ('social', 0.45720078250735313),\n",
       " ('reality', 0.45719346885019546),\n",
       " ('hidden', 0.4567584024957149),\n",
       " ('breaking', 0.4560173872709956),\n",
       " ('sometimes', 0.45563021171182794),\n",
       " ('modern', 0.45500247579345005),\n",
       " ('surfing', 0.4542552722775964),\n",
       " ('popular', 0.45410691533051023),\n",
       " ('surprised', 0.4534409399850382),\n",
       " ('follows', 0.4524536175440835),\n",
       " ('keeps', 0.45234869400701483),\n",
       " ('john', 0.4520909494482197),\n",
       " ('mixed', 0.4519851237430572),\n",
       " ('defeat', 0.4519851237430572),\n",
       " ('justice', 0.4514272436728002),\n",
       " ('treasure', 0.45083371313801535),\n",
       " ('presents', 0.44973793178615257),\n",
       " ('years', 0.4491919703210497),\n",
       " ('chief', 0.4489502200479032),\n",
       " ('shadows', 0.44802472252696035),\n",
       " ('closely', 0.4470141110210369),\n",
       " ('segments', 0.4470141110210369),\n",
       " ('lose', 0.446583355037637),\n",
       " ('caine', 0.44628710262841953),\n",
       " ('caught', 0.4461027538399907),\n",
       " ('hamlet', 0.44558510189758965),\n",
       " ('chinese', 0.4450742462032102),\n",
       " ('welcome', 0.4443805243578379),\n",
       " ('birth', 0.4436863209283622),\n",
       " ('represents', 0.44320543609101143),\n",
       " ('puts', 0.4427910657208508),\n",
       " ('visuals', 0.44183275227903923),\n",
       " ('fame', 0.44183275227903923),\n",
       " ('closer', 0.44183275227903923),\n",
       " ('web', 0.44183275227903923),\n",
       " ('criminal', 0.4412745608048752),\n",
       " ('minor', 0.4409224199448939),\n",
       " ('jon', 0.44086703515908027),\n",
       " ('liked', 0.4407499151402072),\n",
       " ('restaurant', 0.44031183943833246),\n",
       " ('de', 0.4398327516123722),\n",
       " ('flaws', 0.4398327516123722),\n",
       " ('searching', 0.4393666597838457),\n",
       " ('rap', 0.4389130421757044),\n",
       " ('light', 0.4388443301819989),\n",
       " ('elizabeth', 0.43872232986464677),\n",
       " ('marry', 0.4386173154250649),\n",
       " ('learned', 0.4382549309311553),\n",
       " ('controversial', 0.4382549309311553),\n",
       " ('oz', 0.4382549309311553),\n",
       " ('slowly', 0.4378566038993998),\n",
       " ('comedic', 0.43721380642274466),\n",
       " ('wayne', 0.43721380642274466),\n",
       " ('thrilling', 0.43721380642274466),\n",
       " ('bridge', 0.43721380642274466),\n",
       " ('married', 0.4365850168219689),\n",
       " ('nazi', 0.4361020775700542),\n",
       " ('murder', 0.4353180712578455),\n",
       " ('physical', 0.4353180712578455),\n",
       " ('johnny', 0.43483971678806865),\n",
       " ('michelle', 0.4344526449814167),\n",
       " ('wallace', 0.4340384805522204),\n",
       " ('comedies', 0.43395706390247063),\n",
       " ('silent', 0.43395706390247063),\n",
       " ('played', 0.43387244114515305),\n",
       " ('international', 0.43363598507486073),\n",
       " ('vision', 0.4328640822962789),\n",
       " ('intelligent', 0.431967048853671),\n",
       " ('shop', 0.43078291609245434),\n",
       " ('also', 0.4303672020976917),\n",
       " ('levels', 0.4302451371066513),\n",
       " ('miss', 0.4300642671215322),\n",
       " ('movement', 0.4295626596872249),\n",
       " ...]"
      ]
     },
     "execution_count": 16,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# words most frequently seen in a review with a \"POSITIVE\" label\n",
    "pos_neg_ratios.most_common()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 17,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "[('boll', -4.969813299576001),\n",
       " ('uwe', -4.624972813284271),\n",
       " ('seagal', -3.644143560272545),\n",
       " ('unwatchable', -3.258096538021482),\n",
       " ('stinker', -3.2088254890146994),\n",
       " ('mst', -2.9502698994772336),\n",
       " ('incoherent', -2.9368917735310576),\n",
       " ('unfunny', -2.6922395950755678),\n",
       " ('waste', -2.6193845640165536),\n",
       " ('blah', -2.5704288232261625),\n",
       " ('horrid', -2.4849066497880004),\n",
       " ('pointless', -2.4553061800117097),\n",
       " ('atrocious', -2.4259083090260445),\n",
       " ('redeeming', -2.3682390632154826),\n",
       " ('prom', -2.3608540011180215),\n",
       " ('drivel', -2.3470368555648795),\n",
       " ('lousy', -2.307572634505085),\n",
       " ('worst', -2.286987896180378),\n",
       " ('laughable', -2.264363880173848),\n",
       " ('awful', -2.227194247027435),\n",
       " ('poorly', -2.2207550747464135),\n",
       " ('wasting', -2.204604684633842),\n",
       " ('remotely', -2.1972245773362196),\n",
       " ('existent', -2.0794415416798357),\n",
       " ('boredom', -1.995100393246085),\n",
       " ('miserably', -1.9924301646902063),\n",
       " ('sucks', -1.987068221548821),\n",
       " ('uninspired', -1.9832976811269336),\n",
       " ('lame', -1.981767458946166),\n",
       " ('insult', -1.978345424808467)]"
      ]
     },
     "execution_count": 17,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# words most frequently seen in a review with a \"NEGATIVE\" label\n",
    "list(reversed(pos_neg_ratios.most_common()))[0:30]\n",
    "\n",
    "# Note: Above is the code Andrew uses in his solution video, \n",
    "#       so we've included it here to avoid confusion.\n",
    "#       If you explore the documentation for the Counter class, \n",
    "#       you will see you could also find the 30 least common\n",
    "#       words like this: pos_neg_ratios.most_common()[:-31:-1]"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# End of Project 1. \n",
    "## Watch the next video to see Andrew's solution, then continue on to the next lesson.\n",
    "\n",
    "# Transforming Text into Numbers<a id='lesson_3'></a>\n",
    "The cells here include code Andrew shows in the next video. We've included it so you can run the code along with the video without having to type in everything."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 18,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAiIAAAFKCAYAAAAg+zSAAAAABGdBTUEAALGPC/xhBQAAACBjSFJNAAB6JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAB1WlUWHRYTUw6Y29tLmFkb2JlLnhtcAAAAAAAPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iWE1QIENvcmUgNS40LjAiPgogICA8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPgogICAgICA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIgogICAgICAgICAgICB4bWxuczp0aWZmPSJodHRwOi8vbnMuYWRvYmUuY29tL3RpZmYvMS4wLyI+CiAgICAgICAgIDx0aWZmOkNvbXByZXNzaW9uPjE8L3RpZmY6Q29tcHJlc3Npb24+CiAgICAgICAgIDx0aWZmOk9yaWVudGF0aW9uPjE8L3RpZmY6T3JpZW50YXRpb24+CiAgICAgICAgIDx0aWZmOlBob3RvbWV0cmljSW50ZXJwcmV0YXRpb24+MjwvdGlmZjpQaG90b21ldHJpY0ludGVycHJldGF0aW9uPgogICAgICA8L3JkZjpEZXNjcmlwdGlvbj4KICAgPC9yZGY6UkRGPgo8L3g6eG1wbWV0YT4KAtiABQAAQABJREFUeAHtnXvQXVV5/1daZxy1BUpJp1MhE5BSSSAgqBAV5BIuGaQJBoEUATEJAiXYcMsUTfMDK9MAMXKRAEmAgGkASUiGIgQSsEQgKGDCJV6GYkywfzRWibc/OuO8v/1Zuo7r3e/e5+zr2ZfzfWbOe/bZe12e9V373eu7n/WsZ40aCsRIhIAQEAJCQAgIASFQAQJ/UkGdqlIICAEhIASEgBAQAhYBERHdCEJACAgBISAEhEBlCIiIVAa9KhYCQkAICAEhIARERHQPCAEhIASEgBAQApUhICJSGfSqWAgIASEgBISAEBAR0T0gBISAEBACQkAIVIaAiEhl0KtiISAEhIAQEAJCQERE94AQEAJCQAgIASFQGQIiIpVBr4qFgBAQAkJACAgBERHdA0JACAgBISAEhEBlCIiIVAa9KhYCQkAICAEhIARERHQPCAEhIASEgBAQApUhICJSGfSqWAgIASEgBISAEBAR0T0gBISAEBACQkAIVIaAiEhl0KtiISAEhIAQEAJCQERE94AQEAJCQAgIASFQGQIiIpVBr4qFgBAQAkJACAgBERHdA0JACAgBISAEhEBlCIiIVAa9KhYCQkAICAEhIARERHQPCAEhIASEgBAQApUhICJSGfSqWAgIASEgBISAEBAR0T0gBISAEBACQkAIVIaAiEhl0KtiISAEhIAQEAJCQERE94AQEAJCQAgIASFQGQIiIpVBr4qFgBAQAkJACAgBERHdA0JACAgBISAEhEBlCIiIVAa9KhYCQkAICAEhIARERHQPCAEhIASEgBAQApUhICJSAPQXX3yxGTVqlPnlL39ZQGkqQggIASEgBITA4CAgIjI4fR3Z0iVLlpgHH3ww8ppOCgEhIASEgBAoG4FRQ4GUXYnKry8CJ510knnf+95nbrvttvoqKc2EgBAQAkKgtQjIItLarlXDhIAQEAJCQAjUHwERkfr3kTQUAkJACAgBIdBaBERECuhanFXHjBkzrKR169ZZB9atW7daHwymQHBodZ8bbrhhWHp+kJbr+G1wHM7Db65FiV9f1HXOoSO6ItRPXU888YRZvHhxRy853Fp49EcICAEhIAT6hICISMlAz5kzxyxbtszMmDHD4I7D5/HHHzfr16+3RCOq+u9973tm/Pjx5oMf/GAnD/kmTZpkLrjgAjN9+vSobKnOXXnllbbsE0880Vx00UWdenbbbbdU5SixEBACQkAICIE8CLwjT2bl7Y3Az372M/P0008bf4DHsrHPPvtYsoGFY9asWcMKwkJx5513jjgPeTjqqKPMxIkTzWGHHWb4LRECQkAICAEh0GQEZBEpufcuvPDCYSTEVTdu3DhLRrZt2+ZOdb4hGWFy4i4eeeSR1oJxyy23uFP6FgJCQAgIASHQWAREREruuoMPPrhrDb/4xS9GXD/rrLNGnPNPHHPMMWbHjh1m06ZN/mkdCwEhIASEgBBoHAIiIiV3mT8lk7SqPfbYo2vS3Xff3V7ftWtX13S6KASEgBAQAkKg7giIiNS9h7roJyLSBRxdEgJCQAgIgUYgICJSw256++23u2q1fft2ez28ZLhrJl0UAkJACAgBIVBDBEREatgp999/f1etnnrqKevoiuNqWOLigOBPgl+J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\n",
      "text/plain": [
       "<IPython.core.display.Image object>"
      ]
     },
     "execution_count": 18,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "from IPython.display import Image\n",
    "\n",
    "review = \"This was a horrible, terrible movie.\"\n",
    "\n",
    "Image(filename='sentiment_network.png')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 19,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAi4AAAECCAYAAADZzFwPAAAABGdBTUEAALGPC/xhBQAAACBjSFJNAAB6JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAB1WlUWHRYTUw6Y29tLmFkb2JlLnhtcAAAAAAAPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iWE1QIENvcmUgNS40LjAiPgogICA8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPgogICAgICA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIgogICAgICAgICAgICB4bWxuczp0aWZmPSJodHRwOi8vbnMuYWRvYmUuY29tL3RpZmYvMS4wLyI+CiAgICAgICAgIDx0aWZmOkNvbXByZXNzaW9uPjE8L3RpZmY6Q29tcHJlc3Npb24+CiAgICAgICAgIDx0aWZmOk9yaWVudGF0aW9uPjE8L3RpZmY6T3JpZW50YXRpb24+CiAgICAgICAgIDx0aWZmOlBob3RvbWV0cmljSW50ZXJwcmV0YXRpb24+MjwvdGlmZjpQaG90b21ldHJpY0ludGVycHJldGF0aW9uPgogICAgICA8L3JkZjpEZXNjcmlwdGlvbj4KICAgPC9yZGY6UkRGPgo8L3g6eG1wbWV0YT4KAtiABQAAQABJREFUeAHtnXvQVdV5/xdNZjIxjRgrM52qFI01ERQVExWNeMMLQy0YiEiNEgOYaJAOitIaGYo2TFGQeElQAREjRa0oDEG8AKagosYYkEuSjjUEbP+orZFc/KMzmfe3Pys+57fOfvfZZ1/PWXu/zzNz3rPP3uvyrO/a717f/axnPatfTyBGRRFQBBQBRUARUAQUgQog8CcV0FFVVAQUAUVAEVAEFAFFwCKgxEVvBEVAEVAEFAFFQBGoDAJKXCrTVaqoIqAIKAKKgCKgCChx0XtAEVAEFAFFQBFQBCqDgBKXynSVKqoIKAKKgCKgCCgCSlz0HlAEFAFFQBFQBBSByiCgxKUyXaWKKgKKgCKgCCgCioASF70HFAFFQBFQBBQBRaAyCHy8MpqqooqAItAVBH784x+bPXv2mJ07d5q9e/eat99+2+zYsaOXLuPGjTOHHHKIGTp0qBkyZIg59dRTzac//ele6fSEIqAIKAJ5EOinkXPzwKd5FYF6IrBp0yazYcMGs2rVKjNgwAAzcuRIc8IJJ5jBgwebgw8+2Hzuc59ravh//dd/mf/8z/807777rtm1a5d58cUX7Qcyc8kll5gvf/nLSmKaENMfioAikBUBJS5ZkdN8ikDNEPjtb39rli9fbh566CHbshkzZpgLLrjA/MVf/EWmllLexo0bzfr1682yZcvMjTfeaG644YbM5WVSQjMpAopA7RBQH5fadak2SBFIj8A999xjPv/5z5stW7aYJUuWmO3bt5tJkyblIhlME1166aVm6dKl1hqDVocffriZOXOmwUKjoggoAopAFgSUuGRBTfMoAjVBAP+Vk046yaxZs8Z+nnzySfPFL36x8NZhtVmwYEGDwFDHihUrCq9HC1QEFIH6I6BTRfXvY22hIhCJAFaW+fPnm3nz5lnrSmSikk5CmKZOnWqOOeYYOz2lTrwlAa3FKgI1REAtLjXsVG2SIhCHAL4nU6ZMsRaWzZs3d5y0oBsWl61bt5pBgwbZKapf/OIXcSrrNUVAEVAEGgioxaUBhR4oAvVHANIyZswYc+ihh3pj6WDK6JZbbjGQqPBqpfr3iLZQEVAE0iKgcVzSIqbpFYGKIiCkZdiwYdbfxJdm4ATMEuvzzjtPyYsvnaJ6KAIeI6DExePOUdUUgaIQ8JW0SPtYfYQoeRFE9FsRUARaIaDEpRUyel4RqBECc+fOta1hZY+vAnn5zW9+YyZMmGD9X9Rh19eeUr0Uge4ioD4u3cVfa1cESkdAfEh+/vOfVyJ6LY7DH3zwgWFptooioAgoAmEEdFVRGBH9rQjUCAECveH4SpyWqlgwFi1aZPdD0jgvNboRtSmKQIEIqMWlQDC1KEXANwTGjx9vTjzxRDN79mzfVIvVhzgvY8eONVWxEsU2Ri8qAopAoQgocSkUTi1MEfAHgaoP/mwNgPjsl+NPb6smikDfQUCJS9/pa21pH0MAaws7M7PcuIrCNBd7G7HrdNaNHqvYbtVZEVAE4hFQ4hKPj15VBCqJgFhbGPSrLGp1qXLvqe6KQDkIKHEpB1ctVRHoKgKszBk6dKiZPn16V/XIWzlWF7YHUF+XvEhqfkWgPgjoqqL69KW2RBGwCBBsbtmyZYapoqoLU0RsA7Bx48aqN0X1VwQUgYIQUOJSEJBajCLgCwIM8pMnT66NXwg+OuvXr/cFXtVDEVAEuoyAEpcud4BWrwgUjQCD/FlnnVV0sV0r74ILLrAWpK4poBUrAoqAVwgocfGqO1QZRSA/Ahs2bDCnn356/oI8KYHponPPPdfgcKyiCCgCioASF70HFIEaIYAzK4JfSJ2EHa23bdtWpyZpWxQBRSAjAkpcMgKn2RQBHxFg+fPw4cN9VC2XTieccILZt29frjI0syKgCNQDASUu9ehHbYUiYBHAKjFo0KDaoTF48GCzd+/e2rVLG6QIKALpEVDikh4zzaEIeI3AwIEDvdZPlVMEFAFFIA8CSlzyoKd5FQFFoCMIfP7znzerV6/uSF1aiSKgCPiNgBIXv/tHtVMEFIEAgU9/+tOKgyKgCCgCFgElLnojKAKKgCKgCCgCikBlEFDiUpmuUkUVgb6LwC9+8YvaRALuu72oLVcEikFAiUsxOGopikDXEWCPogMHDnRdjzIU+M1vflPLZd5lYKVlKgJ1R+DjdW+gts8PBIh6umfPHrNz5067rPXtt982O3bsaFKOCKnEIDnkkEPszsYcszOwSmsEICvsnIwcfPDB5vjjj6/lvj4QFxVFQBFQBEBAiYveB6UhsGnTJrNq1SpDCPoBAwaYkSNHGgKJTZgwwQ6y4eiuRH0lgNq7775rdu3aZWbNmmVefPFFu2Hg6NGjbX510jRGcKLjICsuuWOAf+edd0rr024VvHv3bjNixIhuVa/1KgKKgEcI9OsJxCN9VJWKI4AFYPny5Wb+/PmWrMyYMcOwSR7WlCxCeex2vHLlShvyfeLEieaGG27IXF4WHXzI45KVww8/PLb9/fr1MxCYOpG88ePHmyuuuMJceumlPnSH6qAIKAJdREB9XLoIfp2qhmDcc889hngbW7ZsMWvWrDHbt283kyZNih1k22HA4Mtg9eSTTzY22WPgnjlzpqHOOgsOqUyxyeaCWFb4tCOBbEj4+uuv1woaIgKfdtpptWqTNkYRUASyIaDEJRtumstBgIH1rLPOahAWSIY7feEkzXXIgL1gwQI7nfTBBx9YkrRixYpcZfqWWYgK37Q3KVlx2wFxeeWVV9xTlT4GC6Ya2xG2SjdSlVcEFIHECOhUUWKoNGEUArfffru5//77zbx586x1JSpNWecY0KZOnWq+8IUvmEWLFlV2aoR2iBRB+LDU4EeExasOwj32P//zP+buu++uQ3O0DYqAIpATASUuOQHsq9mZphkzZoxt/qOPPtq1t2H0wI8Gh9TFixebsMOvj/2DzrISCP2KICvhdp500klm4cKF5vzzzw9fqtxvpgbXrVtnPvWpT1WifysHsCqsCFQMAZ0qqliH+aCukJZhw4aZtWvXdo20gAU+MEuXLjVMj5x33nkGa4OPgnMtlhU+HMsUUBmkhfZ//etftyu6fMQijU5PP/20JSvca0wVudapNOVoWkVAEagPAmpxqU9fdqQlLmnB38QnYZCbNm2a2bx5sxdv5mlWAhWNI/3EUmmWl1fZNwTL0Zw5c5pWE0FeyiJ8RfeDlqcIKALFI6DEpXhMa1uiz6RFQO82ecHiI8HS2i1bFp3L+IY0sST997//vbVIlVFH2WXSl3Pnzo301VHyUjb6Wr4i4C8CSlz87RvvNJsyZYphNQ+rhnwWnDkJXMc0VidimbjTFywH70SdcfhDntCBD/qwNL1qFgpIMivVwtYWt93g7gPerk56rAgoAuUjoMSlfIxrUQMxWh566CGzdevWrg/MSQAlYBlbB+D/Uoa4ZMUnUhAezFkuzoqrqvSb9BXkky0h2pFkSBpTYd0mi6K3fisCikD5CChxKR/jytfA4MCbLSthqrBqB8B5Y0fnRx55pJCVNZRX9kqgvDcKpCWKREHiTjzxRDN79uy8VXQkP+0YO3asdcRN4p+j5KUj3aKVKALeIKDExZuu8FcRBj72iZk+fbq/SkZoxl5JV111lSUcWd7IXbKCo6uvpE30jCItwCKrmO67774mJ9cIyLp+KquuSl663nWqgCLQMQSUuHQM6mpWJA6SVZtqELTTki53JZDPZEXah74Ql3akSkicLyuuRH/3m3YQG4ilz1lWrEFeIKhJrDRuvXqsCCgC1UJAiUu1+qvj2kYtR+24EjkqZDAjvgvTPK2sLqTxYSVQ2mZCWpAkAzVpf/SjH5mbbrrJm+XibnuFtBx99NG5/JLSYOLWr8eKgCJQHQQ+Xh1VVdNOI4C1BanyjrxYIthRmh2r3akul6zgC9POYtFp7NvVl9a6QDyXv/3bvzWf/OQnLZHzyfIipIU240icRyBxkBc+SQhdnro0ryKgCHQHAa8i5z7xxBOmX79+9sNgUzVx9acdrki7+H711VfdS22PTznllAYuS5YsaZu+qAQrV660y1GLKq9b5bBvDzFNcPqUD4MaPiF8WlliuqVvu3ppA/onHZhJL/4vkFB8XSBrQkzb1VfmdQiYTA9BporoC8GFslUUAUWgfgh4RVzqB291W8Qb6+rVq83IkSOr2whHc/a5YTqoqmRFmiIkJOkATz8SCM8VyMvrr79uowzPnDnT+si41zt1DHFiGo8VRFl8WuL0FGKn5CUOJb2mCFQTASUu1ey30rV+4YUXzOTJkwt5Ay5d2TYVQFa+/e1vmw0bNrRJ6e9lplOEtKTRslXIfzChvL1799pAbxx3SiBTBDNkewaC47lTeEXqALmDwCh5KRJVLUsR6D4CSlwK7IPLLrvM9PT0ND4FFt3xotiNd/To0YXWu2fPHsNU13XXXWf9TtzpMzlmWoxpwjvvvNM899xzDafZvIqcfvrpld10kIGej0z3JMWiHdFhUCfAG7trY/VgBVaZBAbyRSBD2kFwQBym07YpadslnZIXQUK/FYEaIRAMtN7I448/3hNAaz+XX3651evBBx9snOPaLbfc0rN///6WOm/bts2mkXL4PvLII3so58CBA5H53LTk53PhhRfaesmHJEnj6k96V8L5n3322UYdXKM+zkVJsDy0Ub/o46aLajP4oU9WQafgbT1r9qZ8Lp4uDkmO6bs77rijZd81VdTmRzBQ9wSDZZtUfl2mD7L0Q9p8wTRaz913390DRuPGjevZuHFjYUCA+Y033tgouxt9QPuC6bHC2qQFKQKKQPcQaB5du6eHrdkd+Bl4+UQNbgxmUeSFAS4qvZwj3+7du3u1Uq7zHS5DiEKSNK7+pHfFzQ/5cn+7x1KfmzeOuJDezR8+pq60wsASRFpNmy0yfTv9wvq2+g0GUX0eWWmLk8HUV89TTz3V4qp/p+mHLKSFlmQdpBngH374Ydv/kBgIByQmrR7Uf9tttzWVk7aMMnokKy5l6KJlKgKKQDYEvF0O/dhjjwVjWLQEA5iNR7Fq1apGAqYgbr755sbvqAPyXXzxxWbXrl2G4GJR0q4M8iRJE1W2nJs3b54c9vq+5pprzAknnGCY2mgnTKWQPk6oa9CgQWbq1KlxyZquMaVzzDHHNJ3L8iOJfknLffPNN63PDWVmlaFDhxrugSoIUzas/EnqhOu2qd0UkZs2fEx9kyZNsh98Q8B78eLF1lGbbQO4L7ifBg4cGM5qtmzZYt5//327weW5555r+CxcuLCQLRd6VZbxhPj2lD1FlVE9zaYIKAIJEPDaxyWYPjGBhcT6jATTPIbfIi6xYbUIm7KJEHkzmJ6w+QI+ZwKrg1yyA9cDDzzQ+B11QHry8Wk14CdJE1W2nAssEY06AkuNnLbf7K+TRNx2uVgxOAfWqkYRYANGSYX8hPjPK3fddVevItCTtvOhj8KfYLrMXqNt9KMrzz//vB1I3XNpjocMGWIH1zR5upFWiEcW0hK1iihrG4htg+MsfjD8L3Cfzpo1K5K0UMe1115rl52TlqXN7I10/vnnZ62+tHxCXvC5UVEEFIEKIhA8ZLyR8FRLMIA26YavRABx4yM+K+F8pAuLO+3ElJErbpmki5IkacJ6uOW4+YNB2b1kj8NTKtI2LkZNFTHl5ZYZxor8tFPSoFtSwdeBTx6hfqmb71bTdO3qCOPCVF5WYZoA/w1fpQg/DJ0KSd67TMWBuYoioAhUCwFvLS68bR9xxBHBmPf/JfxbrAg7duxoJAoGyMhplq997WuNNFgUmA6JEuJKtJMkaeLKuOSSS3pdPvPMM5vOvfvuu02/wz+Y7hLBihHGhqmwK6+8UpKYX/3qV43jdgeY/LFO5JEwvsTpGDx4cOoisXi5lhemjOooWVcOuViIpcY9p8etEcCiBO5qeWmNkV5RBHxEwFsfl2OPPTYxXu+8804jbZgAyIX+/fvLof0W0tN0MvgRThe+zu8kaaLyybkwyeB82OemlX5SRmDRkEPDFArLiePkgw8+iLvc61pYn14JUp6I8olIWgT3Ql0JCxgweCJ5th0ocorIKtNH/oA5vjwsDc8yNddHYNJmKgJeIeCtxcUrlFSZ3Ajs3LkzUxkQuJdffjlT3ipkkuBoDJx5JFixk3gLgDz11DGvWF6EQNaxjdomRaBOCNSCuLCjrEirQc61UJC2aIuC1J/kG4fjsIQtLFFWGTePa/XBETeYoYz9fOc733Gzxx6zaiQ81RObIeJieFUUDsJp91liuuzv//7vm1YC5Z2mi1C1a6eY2oGw5CUtOkWUvwvF2qXkJT+WWoIiUDYC3k4VpWk4yzRF8F9hE8PwwBnEppAkBj+YLP4WjQJyHuBDctFFFzWV4hIu9GtHXI4//vhGfvJCfIoiY0zrhIleo7IUB6wyYSktQr+wdJsPROszn/mMOfnkk3uVxpQW00L//u//Hjk91GoqsFdBnp8oimx0YoqIOl577TXbh9y7iCx75hjiNXz4cA4N/4vcP/z/CRmwFyrwh3bQVj55yWQFmqsqKgKVRaAWxIXYLAz2DI7It771LfO9732vQV7Yp8ZdPu06rXaj58KxVdhV2o3HkkQ/iBdOqwzytPsrX/mKWbRoUYOQUSYb6Akmwaoiw5YESaUI4sJeND/84Q8bOkjdbl/IuSTfLJHOQzixImFN6qbgCBqsZiks1D1TRGXEJGEKi3uIjTbfe+89S0xYIn/FFVc0SLXUy0CPHgjL27du3WrvRfKNGjXKbh3Bxo5VECEvtL9qxKsK+KqOikAhCPi0CMpdThy1LDkYhJuW2PJbJLxsNgCnKa38DghOr/Dxco3vVsuGk6Rx9Se9K27+dsduuygjajk058P1tSqX/GmkyGXDbGMA5q10S3o+sN706rc0bSItkVzzLvNOW6ebnsixLMEtSspY+kxkYaImBwO4xStPHbSXKLxBIDpbHthzrgoSWDAL7asqtFl1VASqgkAtfFyCwc8GinMDsnEuLFhlCHBW1JRKuPykv4NYJC2TEpit3TSRZMaCQvo4wSqzdu3auCS9rh1++OH2TbvXhQwnmBJj6TZtBv+0wrQSffb9738/d7+xbF6mNNLqkTc9VgmkqLd4yqOfipKnn37anHTSSWbu3Llmzpw51oJCADmxqmSpB+sFUXgJRscu0Pv27bM6s9Gi70uQWWGE/uI8naX9mkcRUATKQaAWU0UCDQ6omLOZh3fD6jNg8hCeMGFC7sFP6srzze7Hf/mXf2mjjMoyX2Kx3HDDDb18X9rVQ5wT/D7Wr1/ftBUBhOWb3/xmy8i/ceXywMZXoShzOUTxpptush+ma8SfhwEtLDhaM52DnwQkoyiSyUDJtMfy5cvDVZb+GxxlICyqMqZm8pAK0QPdmEp9++23LWEpa0oHXflwjxONd/78+YYI0T5G1hVspM+K+j+QcvVbEVAE8iHQD9NQviI0dx0RwD8G8sAgUwfZtGmTgdhGkaUy24cTbtY9h1rpVZRj74oVK+x2GITxv/rqqzsax4T+uOqqq6wPDL5ZPsdQKdovqVW/6nlFQBFIhkBtpoqSNVdTJUUAp0rM+3UQBsmVK1faaYtOtkcIRpGDclFTRBBTplbpY8hpkTomwRhLC07KrCIbM2aM11MyYIO1iP5UUQQUge4joBaX7veBtxrgQ4GFoii/jG41lDdm2rB06VIzYMCAhhpFTLU0CnMOynxDFzLkVJfqEN0gCgi+T50mLFHKQqLY6b0K91pe/KPar+cUAUUgHQJKXNLh1adSEzSOZdHsM1RlYUpk3bp1dpdjtx3hN+gipnSwiAhRcusq4jjvoOkjaRFccA5m+bySF0FEvxUBRaAVAkpcWiGj520gLqwuOILisFtVYbXMwoUL2zqC4oTpRjCm7WnaLSuH0uRJimkRZY8fP94GjvPF0hJue9XISxFEN4yB/lYEFIH2CChxaY9Rn06BGR+pqtUFawvOn9u3b0/dj5AFSJsIK5xaTZuVsXJI6uU7r7UF69mLL77ozfSQ2zb3uCp6ojN9Dkn1YbrNxVCPFYG6I6DEpe49nLN9DN5YHnCkbDVo56yitOxMjfBWjANqEf4slAcOrojTZplv33lJi6zgoZwyrEEuHkUcYxk65JBDrE9SEeWVWYaSlzLR1bIVgWgElLhE46JnHQQIGMbg3+mlxI4KmQ6nTJli8+GUW5Zg0XG3ISiCILm65p0iEvLme8wUt81V07lsa5uLjR4rAoqAMUpc9C5IhAC7Mo8dO7YycV3KtjKI9SVMVLBquJLXEpPX2tIJ8ua2t6hj6T8sXFWYislLMIvCTctRBPoCAkpc+kIvF9BG3iohL1V4cy9bVwYpiEuSqTN0yerwm5e0kB+yWZXBP3ybMmVEBGeiXldBlLxUoZdUxzogoMSlDr3YoTZUYdUHhII4JcHGfqUMeHkHJ/IncfjNWw+3BAM/W2BUNfoxGFRtVVsR/dahf2etRhGoLAJKXCrbdd1RXMLE+xhvA9JywQUXmC996UulrIIqw5dBppzc3hSH3/A0lJum3XHVrS3SPla19e/fvxQSKnUU/Q15SWqRK7puLU8R6AsIKHHpC71ccBt9jHQqlpbjjz/eXHnllYWsInJhgwjk9Vdxy4s7Djv8ZqmXPqrDXlMy7edaqeKw8+Ua9yMEJsl0oi86qx6KQFUQUOJSlZ7yTE+ZNvLB54XBjZ2/R44c2bC0FEk0KCuP9SNN10VNNaT1k2HQJOZM1QMHCm74Vl1//fWmrJ2rpZ6iv5W8FI2olqcI/BGBj/1jIAqGIpAWgeOOO84cffTRZurUqebDDz80Z599dtoiCkmPdYJdhm+99VZz8803N8rEN2Lv3r3m//7v/zKvSmHgeeuttzpGWlAeR1osLK4cdthh1teDNvFBL9JBcvj87ne/M6QReeaZZ8x///d/2xD6cq7q3xs3bjR/8zd/U6lmfOITnzB8uIfoNxVFQBEoBgG1uBSDY58tBWvAtddea9s/f/78jg3yDNg4nb799ttmyZIlLeslHQN9WpN91nx5boSslh0hMlL33XffbX19Jk2aJKcq/U1fYPGq2nSRC3rWvnXL0GNFQBH4IwJ/okAoAnkQgBDgqMuyWz74VjDQlCUM0oSF5w2WpbJbt25tSVrQgUixfBg4koron5bsJC0/Kh11Zn0rJ84JA7t8du3aZT71qU/ZkPRRdVXtHP3Hrt5p+tC3NtI3VdbfNzxVn76NgBKXvt3/hbUe6wfTFwgDMIHPCCJWlGDZgRThu8GO1bx9E98jSXAyGdgZOCA+cUI9SKdD4xfljwIB2rFjh10K3UniFYdpEdfwX9qzZ08RRXWtDCUvXYNeK64ZAkpcatah3WwOBIHNGAm4NnToUHPjjTcadmaGcEBi2pGGsO4QDawrlIGDJstit2zZYubMmZOJWDBwMLCLRSWqPrHQhK+V+Zt2olsRAgEaN25cEUV5VQYrpHbu3OmVTlmUEfKS9n8hS12aRxGoKwLq41LXnvWkXVgwnnjiCWsFWL16tZ3eOeaYY+w3RCQsEJP333/f7mRMEDk+Z5xxhjn//PMbSfMO9BAXBg7XIpG3zIZyKQ+ERBVl4cFZmQG+qrt5t4KP/sGH6sknn2yVpFLn+b+gz5NYDCvVMFVWEegAAh/vQB1aRR9GAHLghmzngY1FZtu2bZGo4OjLdFCcBULeWuPSRBb+0UkGDIgLgyEreJjiylpWXD1JrmEhKbJuptGwTqj4jQD/F0pe/O4j1c5fBNTi4m/fqGYxCBRhqaCMV155xVx00UVdefMtw8rDTt5IVcP8t+pyiCaEtqenp1WSSp6HvGB1KcriVkkQVGlFICUC6uOSEjBN7gcCYjXJ6isgxIf9fDjOWk5WNKgz6yqirHVWOV9dp1RkulLuxyr3kequCHQKASUunUJa6ykcAR76spIpTeG85SLylks5DBydHDyKWkWUpt2a1k8E5D7s5P3nJxKqlSKQDAElLslw0lSeIoCPihCRJCoyPcNAIYOF5JE33zRlSd6032VMEaXVoWrpGdTDfVa1NsTpK21T8hKHkl5TBP6IgBIXvRMqjQBTCHySPPCFMLSadhBCQ7qyBD11iig9uliohg8fnj5jhXIIeekEea4QLKqqItALAV1V1AsSPVEGAgzYr732mtm/f7+NxUIdsuyZY6LgskxajlkZc/rppzctWbYXI/7wwBdLSsRl67+SdOUQpEZWLWXZlTmqfvdc0auI3LI5PvLII8369evDpyv/m5VofUG4l/G3gryIFTBPu/m/+9nPfmZ2795t90z64IMPmv7vqE8IIf+D/N8NHjy40JVuefTXvIpAFAK6qigKFT1XCAI8fInhQvyW9957zz4gR4wYYYYMGWJXiFCJLAUmLYMTH3nIvvHGGzbfxIkTzahRo5piuUQpKBYV9xoPbgaCLIMAOkFk5E3YLTfLcZR+WcqJy0Mds2bNstswxKWr2rW6rpZq1Q/cs9y7We9b+b8jijIBCfm/g9QeccQRtsrw/x0nCVGwb98+w4aW/L/yPzd69Gi763orK2Ur/fW8IlAmAkpcykS3D5bNA5cH39y5c23reWhedtllmR7AFAB5ePXVV82iRYvsw5RB+eqrr45cvhx+2PPgR/IQjzzEx1b+0Z8idHHLa3UMBiwbhgBmHfhald3N82whwcDLbuR5+rObbUhbN32Z1FJI2U8//bS599577f9MUrLfSifunRdeeMEQ0JD/wW9+85tm8uTJfQb7VrjoeU8QCOIiqCgChSDw1FNP9QSDSk9AVno4Llpef/11WzZ1BDsg9wSDc68qgge9Pc93MC3T63qWE9RD3Xkkb/4kdVMHn1NOOaXnX//1X5NkqUwa+lz6VNrZCUx9AKhdO4MXhZ5gmsd+yvi/A/dg+w4C6NjvqP87H3BSHfoOAgR0UlEEciHAgy0IzW8fnO0esrkq+igzdUCOeFjz0A7Lww8/HElqwunS/qbeLA/tsjChXPcj7bntttt6+NRFuL/o6yhx218UUY2qp9vnou4h2sv/AaSuDMISbjP1BVYXWx//YyqKQLcQUOLSLeRrUi8PMN7EsIB0WsTCwyAthIIHPMcMdmUI5aYZIEmbJn2cztTtDtSt0sobeKvrVTtP//LG307AOQk+7crx9bpLXqLu/U7pjR4QSUiM/N91qm6tRxEAAfVx8WTKrmpqMP+OHwv+LI8//nhmH5a87WYu/qtf/ar5wx/+YIIBzpx99tm2yDJ9Siib9idxnMzjkEs9wWDcgCjNKieWXK9Zs6bh/NwopIIH7A6+ZMmS1G0BexHwCCwT8rOy37TpBz/4gXV472b/cv/PmDHD4EDfzf//ynakKp4LASUuueDrm5l5aI0ZM8Y2fu3atZGOsp1EhgH+1ltvNc8995xdTSOEIg9paKc/GAQWkNjBNG39UqbUnWewvf322w0bLlZ9l2gcTiHI27dvF1gyfbskEOdluUcyFdbFTDNnzjQvvfSSeeSRR8yxxx7bRU3+WDWrvdi1e/PmzZXFtOsgqgKpEVDikhqyvp1BSMuwYcO8GRTRieWaPNRXrVrV9BBNSx7S9i7lR1lCGCiRdm/55BcpckClfogPFpt2Okj9Pn6zl9QVV1xhLr300sLUCxPEqP4rrLICC+L+fvPNNw0vC7TBl36FXE6bNq3p/67AZmtRikAvBJS49IJET7RCwEfSEtZVyAvWEMgMOjOIl/mGHRXvpRVhcokKuks8jXA7ivgNFkhVrS5gNXbsWGvZKjOOCP0X+GpYrIokj7bAgv64pKVMLLKqq+QlK3KaLwsCSlyyoNZH8/j+8JRuET0xXyMMTLydlvnAhxxBkiBILmlxB0V0KZOoUL4r6ER9VTXj49syZ86cQq0tLj5Rx/QhpFfEB2sM0zEPPfSQ2bp1a6n3sLQ56zcxX4i35LueWdun+fxBQImLP33htSY8lG655ZbS336LAuG8884zwRJtM3v2bFukSyaKqiNcDoMeDpN/9md/ZgYMGGAvd3vgY9BDJyFxYZ19/e2L3i7x7IY1RqxOVSGfBApkW4Enn3zS11tL9aoBAkpcatCJZTdB3ty7uYohbRujdC6DvITf0AmVDmnpNmFx8YLEMeUyffp097S3x5AF8MPyUeYUX1oAwn1ddh9TH3XMmzfPTJo0Ka26XUmPzmeddZZdcVQVnbsClFaaCwElLrng6xuZcZAM4jY0rBdVaXXYdA2ZQfI6NUKARNy3cJcYdWJ6SnRo940ukBfM+Gy/4LNUaeBzrTF5VoC16g9WhrHXUNWsF2Il4jvv/1orbPR830ZAiUvf7v+2rZeHkDi7ts3gWQJIFxvMibXBJRdJVXUHKPJE+alEkSLy4Vfjw8P7vvvuM//0T/9k/u3f/s0rK4bbB5AWltn7tGLN1S/umP53Y+5E3SNx+cPXKK/Kq8Kq7hge7g/97RkCGodPEYhDgAiZnQgnHqdDnmtE+QyIQ1OETzcCaVTZAUlrisCaJDpoqzKJ5kp53RR0ow1EOQaLbuvTCgui47J1RBK8W5Xhy3kwlw/3QFoBi25Eo06rZ6v0tDkY6nJHjQ52rLblUNaDDz7YqjpvzwckPJP+QVC/Rj7a3mkJYkD1iO7XXnttp6tvW1/nEWmrkv8JpEOj/pnirvnfsmYN6xI6nv1c3EGAgdEdvHnIyiAjg3wzEvG/yBMn1NcuTVz+rNei6mVA9I28oCfh4+tCWsL9Fb6/wtfDv2XQB5cqC/canzwiz1O+qyiif9RYwTn5QFRc6TZxQRdXh2effdZVr+vHfxIAp1JTBPr162fk88QTT6RuJcHcCOtddZk1a5ZdTuq2Y+fOnXbahKkjBNO+fNIsmxaTvlt2+JjyKJu6mA7phKAXn/CUBTFdcPbE52XTpk2dUCW2Dpkeeuedd2xgtTTYxxbs0UWmCuXekvuAe4EPfRSWu+66ywQDvtdLn8M6R/2+4YYbzMKFCzPf82zzQMA9hP9hlc4igD9cQLxspawo9Uq6Tp0qqEAci4671ummBjdaS0bfTpe6vPVJO//qr/6q53vf+561fIi1pQgrSNoyqBtsy5Qkdcgmfa4lqkydosoGO6w/ed/Ko8quyjnXGiP3pW8WsTxYYu3MMtXMVMWRRx5pn19811HyPJ87hQfTc6KnT1N1anHxikb6o8wLL7xgAvN95d/6QJQ3W94eeKvnjVeW2Mrbb1bUKZcy0ojUjeNuGYJOvOHziRNC6BMbhCXuWF/K0idKB6wsrJhhiTZOw1WN7BvVtrTn6CfuIT4cf//73zfuSrW05fmWnu0aVq5cmVqtYJrC7N+/3+a7/vrrm/JjiRFL8re//W0b9fjOO+9snOMaaYKptqZ87o9XX33VkFfK4XvgwIFt82G5njhxYlM+freyaJ9yyimNtOiESH5XnwkTJth0Ug7frm6SNtzOPXv2yKXGt5vmoosuapznIKrdcfqPGjWqkf/+++9vHHf9oJPMzbVGBA23zlbBzdmkQmCSajA8mHb4ulsGx2GBqbsskXpa1eXmJY9bdlweN12YhcZdoz6czdw2Us/ll19u5xNdfeTYLQ8syH/hhRc2YRTWgfKk3eHv8Fyq1BP+xucgy5tSuBxffvM2i6NxWHjjzWIByZpP6o/yP5FrWb7zlIfVJRg0reUjCxZJ9UVHqYv7q8y6kurkW7pgh/MePnUR+pxnEN9pxH3u8cxzxX2+8yx1n4fu844ywuMH5dxxxx0tn4/kZ9zZvXu3W6U9Dj+33bo45rkbFrcd8pxO8nx2/UsoWwS93HqlTLnOt1iqSOded3Fzy5Bj2hclLr6++Lr8f0SiNC7gHDeO23ABSb7DNwnpXeBdMMOdGb6h6VQ3r9ThfofzpNUPSKJuRoEq7lqWGydcntsW99j9p0nyjyH6tvqm7LoNLAzOUW2C1KR9sKadImqFM+WkrTtcFm2SaYbwtaS/KYMpG/qd77zlufVSthAWpg6Kws6toy7HOCjXDR/ahKN/UgkPzuF87Z6jrZ6LlJM0L+MIL8Ei4bHHrcM9pnxXws9vriV5Pofra1VmeMVPGDt+IxAOV89Wx2H9yesSvXB9XO+GlE5c4kiLgBe+ScI3l7Bm9yYIA+jOiUq5Ud+U4UoW/Vw9wh3d6lrWG8ctL6o97jlhw0n+MVwMwsetrBPhdGX+dttQVD1x8+1pBos0aZPoDt5RhKrsvFHlowdv/JA8LFQcZ2kvbWL5NZYV7lG+s5QTpWOdz4FVN6WM/zvuoTS+VO7zn+dzWNzr4EUaGSP4dtvAdXlZDY8RPFvlGnWELSoM2CJumdQnpCb84hvW131+h8cKdJMPRMWVOOLiEgnGTldcbFxdXD04L4QmjFd4LKZsV5dwfW7dnTwu9b/EbTAd5HZc3DUAcIHmhnLTA57cqAKW22HhutyO5poM8G6Z4Txx11zd3DaF9XavuXnS3DhuvrCOYTLk/qOhC+nlQ3uSCm9HDPLdFPdBIQ+JvPrw8Gz1AMXqkcTKwMCelWTE6U+ZSep3yyB9XmuNW174mPuAQQcCw33EmzMERHAMf5OW+wbSw4e0TDeWqWNY5yr/htiBcTeljP877gHuhaTCS6k8t8IvqJQRftaHxwKeF5Kfb3kuhp/pLmkR3dz2u4O0+xx2n+vkCz+HpSy+4/K5Ooafz2Fd3TJbWVVI42IneobTR+FFW0WfsC7gJNf4Dud3devUcanOuT/60Y+Cdv5RAvJhpk6dKj+ts2QAbON32PEnWAHSuMbyzfnz5zd+s3HeEUcc0fjNgRsWO1zXTTfd1FjWRdq33nqLL5NHP1tAwj84UMmyPrIsW7bMDB482OamHQ888IAJbhz7O7gpTPCPYI/Df8LtwvEquFEbydjcrAgJbnQbbbaIsoooI8oBLUu5YLxly5bIrLIMt91y5YBgtHV8jaygzclgoLfl4lybRMQJV/ROkidtmvPPP99u87B9+3br6Mj/IPvQtJL+/fvbZavoBk5Lly61OzuXqWMrXap4PiB45tBDD/VG9aL+73jGpXk2vfbaaw0MjjrqqMZx1EHwEthrLMC52X0u/vKXv7RZ2T5BhGfB6aefLj8b31/72tcaxzyLBYPTTjutcf6aa64xOMCKAzDP4WDAbnwaCUs6YOwICFGj9Jdffrlx/MMf/rBxfOaZZ9rjXbt2Nc61wuvKK69spPnVr37VOOYgPNYyPnRbPl6mAu4NSNj1sLgeywzs/ONy0yHcVAzUkBZEBn46zCVA9mLw5/nnn5dDu69O48dHBz/5yU/Cp0we/XoVFnMi6Y0jbQ3fOFJ08OYrh43vk08+uXFc1wNirkQ9ZNK2N/wPGM7Pih8G3VYrheKuhcvK8psBnrqpp9UGfhCrwNLSUscs9SbJI7q1wiZJGZomHgHfXhiK+r9j64LVq1fHN965ykalIocccogcRn5/4QtfiDzvEp5f//rXNg2rCkVkUJff8g35doUxCZk2bZpZvHhx49LNN99sjyExSGCpMZCe8Coee7GEP9QnY+JPf/pTWwMkC7KFQFDk5TiwQNlz/GGcZLVSnLQjmW55ceWUea1Ui4sASwMuvvjipuVdgCdWBmmg3CTyG9YcTuNaYiTdu+++K4f2m2VtSSSvfknqII3b0XLjuEvdOBbSQvpWN07SdlFGHsEqEcY9T3l587J0Vt588pbVLr8Qh3C6JIHmwnmy/kYHCSDnliHnlDy4qOhxWQgU9X+HNTGNyOCbJk/ZaSEBEEtepqPkscces2MclphOiGv5FCvL+vXrG1WzR1udpVTikhc4iEz4JuYtQKV8BNpZJ5Jo4MZbCBO1dr95EIhwD0B8eSh0gsDwhhiOaFrWFJG0MfwdjvcicVbkfDi9/lYEBIGq/t+J/u40iJxr9S3WlPB1mR7i/NFHH20vyzc/3OkVe/GjP+5LJqdkBoBjyMt3vvOdxpQQrg583Jc8LDGdeEZhgZZ6eT5SZ+CThppWXIuSa0XCUuNOa0Ud00bfpVTi4t6AgYNPW8DCgyWMPyycC1tY3JuL9Pv27Qtni/ydV7/IQiNO1vHGiWhmqaf45+ShEHVPFF0xb4hMyYi/S9lTRK30F7+XFStWWP+XtG+urcrV84pAUgQ6+X8nOh122GFy2NL6LAmYvgmPB/x2p3UGDRpkk7tT7bSLYGxhCVbCNU5BDCArlOe+aAkxwWWBD64AQiLI7LoGNAor4cANzEeQP3GXcKeJqPb4449v1A5hC89sNC4mPOiU5T9OnVKJi+vQlNZSQuRAeevmpqAzEG4496bkHMTFvXGifEQAW24+iWCYRz/qTSpF3zhJ682ajnll+efMWkbV82HZwJekk1NEYczEn2XSpElWFyFS4XT6WxGoEwKf/exnG81xLSeNk6GDYMVSg7xAMvjtilgfsNq648S3vvWtJvJCJF0Zc8gvDqu8ULv5wi/PvJQzLom4L6pyrt132NLTLj3X3eki19UgPE0E+ZKXdPT8yle+0vR8Z6x1x0eJ3is6hIkh5XVbSiUu55xzTqN9ODEJYeAkYFx33XUNMkFoZBEY4cyZM+WnXdkwd+7cxm86KcyW5SYjEW/mzz33XCM9UwzujSU3clb9GgUnPMh74ySsJjZZmn+MoUOHNvnlxBZc44s4yL7yyiulrCJqB1vYn6WV30u7coq4DmHC6nTPPfdYixcPxqgP/7OkYfPG8FRbEXr0hTLS/J9WBQ+mOdNYC90FB//xH//RtplYGiAWvJjyLZYHMuInKQMtL7isSBXBx3H48OGNMcgd/CnH3djRtW5AbqQ+6oQQiXCeMtMK4yNlhUlDXDnudJGbTsY395zbFvAZMmRIo91sNyDjIwSH7VFccY0OGBDCMxxu2k4dl7qqCABYQilOsHSOeGGHG+gCSx4BkhsBYAGL+TlhxLBld6UQN6h747k3k1uXeyNn1c8tL+kx7aMdiNw4UXmjbpyodGnPCfbBGv1eN2ZUWUU8QFk1xttIkZLnnwYr0qCPzMZJdMLicsYZZ9hBOM2DN0nZcWl40LOKJ+zPwm8hNGXrQz3sV8U01YsvvmiC+CL2rY03M/d/1W0H+HLfYBFlFQmm+SCui32wq0Oxi1T0MQOeG/YhOlX7s7793/EimmYwd1eb8qwkf6v/e8aE999/v4msCEIMsv/8z/8sP+03Uzt79+5tGiuaEgQ/GHMISeHW+Y1vfMP6kLikKJyP3xAPN19UGjmHfu3Kk7StviFUssKJNJQpRM3Nw1jH/2ar8Ze0jD1r1651s9ljd7HIyJEje13vyomyA8YEBCQ25H/Q6KbAdIHndlOwGwmig55x17geDtpD2e4n6NRGxEPSI2n1I0/QwY1yXf3aXSOtq0/4mHLRxxW3LgIBhcUtM/B4b7pMe8N1hIMLNWX46AeBsLodgC5Kr7zn0kTwJCAcH6STEV+pK3hQxzYVvQg+V4ZI8EHuG0L/87udPq30oC0SwI4gdkTSzVpWqzrqdJ4+Bae6Cf2edgdw99lFgDdX3GdeQFzsM51nn/usCz+X3fwcU2Y4T0BY7FgUDPDh5I3flOvqJnVynvEpLO7zO6wT6YMX6Sa95fkcHsvC5cpv2iE68B2uQ9LJN3WGA7KiY1w+t71RY5CU3clvHGY7IgDjAgDI3DhhINw0ABoW92bjRgsP9HSMm4Z62nUMdSTVj7RxN2PcNfKmvXHc8sJYUR56y41Lu12J+8dw04WPGRiDN/rw6cr/howxECeRMFkJ/05SRpo0DOhp6kibvp0u1M2gWRbBEELEfdUqenE7HfvCdf6X60buIC2QlzTiDtzh55r7zIO4qJSHAGOIjC+MRb5Ix4iLLw1WPZIhwABW1lt9Mg2KT5V0UIgiEK4FpmjN8lhQ0DXPQEfdhGOHUKQdXLLggL4QSO6vKJyzlFmnPGnIdVXanaWvsXrwYsr/LN+uFUSJS+d63rXOiDWoc7W3rqlU59zgplOpKALMZYYdoCvaFKs2DqP4abQLP49vB3FcwoJPCU6qRa/syRufJY/TLpiQn1Vk+POweqlsoT6255gxY4YZO3ZsR5a3l92mIssnwviGDRuKLLKrZfH/RCTctD5O+ImII21gVTfBoNnVdvTFyoMXInPvvffapgfWlkS+kZ3CSYlLp5CuWD14puOYWQdhgMbpDOLSTgILRMsVELJEul0ZSa/LagtIUR4RJ14hQUnKYknnVVddZR555BGzYMGCtoQuSZlp0kCSWKmE4+95551XOCFMo4svaSHF3Av0SdEEuVttxMF74sSJmarHkTZwHbB5w3vZZSpQM6VCALIIaUTchS+pCikpsRKXkoCterFYXBgIeWOqupx66qn2je24446zgyUDZpQkCTTHEuk0BCGqHs5RF4NUOwtQq/zh85TFp1Xb3PQsW4YwbN682bCRYrcEfdGBtzliUhSBa7fakrVe2kyf8eF/jWXm4BJMo2Ut0qt8ixYtMu4qobTKkR9hZaobTiNtOZo+HQJYWyTYZzBd1LE9mJJq2Y9ZpKSJNV3fQkBi6fBGXmV5+umnrcmTQVLEHeAxSwuBYNBoJ0LmkqQNl8WbNNMyaU3n4XLiftO2Vps00qcMAligpM1xZXXqGnqtWrXKEhmxIHWq7k7Ww72DVU8kqp+wdK5bt65px3tJX6Vv7kOmA932Vkl/1dVfBJS4+Ns3XdeMhywDLAOtT4NcWmBOOukkM2fOHHPppZdGZoVMPPXUU434B/i4tCMlPJTTkg/wpK5ODMy8ydNnbjt8JS3SKUJeqn6/SXvk2yXJSe4t7hEIDfnc/pPyqvKN9QifnenTp1dFZdWzIggocalIR3VLTQYTgo5V9eGDtYWoy9u3b28JYZiEJHkrprBwvpYVBBeiiERc+iKuuUSJiLYPPfSQ2bp1q9ck1HdylaRf6GtM7SJpCS756C92aceRuYrC/wbWlrqR0Cr2RR11VuJSx14tsE0MfrwlxjmtFlhdoUXx5orvxMKFC1v6ctA+JO7NttVARPnkb2dB4SEeNSVQaGNbFIaOWJP+4R/+wfq1tNO1RTEdPY2zLo7Usqqko5VnqAyMGaBFiuhryqScNWvWpLbsiR7d/FZrSzfRr3/dSlzq38e5W4iT1o4dOyr39pdE7zRWEwGSPCL/+7//a1iBFTWVJgNaljduKT/vtwyA9913X8upsrx1FJ0fMghmrK7ppvNwXLvcewAfqTIIIb4uOKf6biUL4yR6x1k5w3n0tyKQBgElLmnQ6qNpGfywXBB7oxOxPoqAmYEFUzXfrawpXMtLKsAmyj+GwZdrZQxoafBh6oW9RpYuXZomW9fTyhSfL4M2/ek6mea9b5ICjOUiCOBWGesT1kksZlW1FCXtF03XXQSUuHQX/8rUzgMJ0zUm8W4Pxu1AS2JlYCBCWpGadnW416mP8sCFb3aUPuigg8yAAQO6NkWEfjKIxJE3tx2+HXd7ugHcRJI41UraIr+5nyBJVbCY8X8wZswY+8JQVZ+4IvtOyyoPASUu5WFbu5J5C542bZrXS1bl4UlskLhl3EVYW9wOFiLEW7nr49DKP8bNW9Zxtwf+vO2ijzrp4NnNvorDigCKBAtkiTT3ta8yZcoUa92rqkOxr7iqXr0RUOLSGxM9E4OAz6s+hLQceuihsf44RZMW4KJupozaTaW5b/Fl+Uagj1hbqr6qo0zyRZ8V7VQL9mXIv/zLv9ipWlYa+Wjx9Pm5UEZ/aJndRUCJS3fxr2Tt8pBavHixNw9RIS0AGhdcTSwjRUwRSedRJvUzoKQhReGBs8jpCPqof//+lfGNECzD32J1cf1LwmnS/O4UcUyjU7u0cn/t2bPHS4unPA/i/u/atVGvKwJpEFDikgYtTdtAgIeVL5FOebB/9atfNUcffbRdhRG1wkcUT0MsJE/cN5YNN9AbZAR9srwVk88doN0ppzgdwtfQgby0tUiCFq6nU78JIBi3pD1OjzCmnXKqjdMpzTX0R6QfZbrWB58X7jN8WhAlLRYG/dMhBD72j4F0qC6tpkYIsPkZRIHVRkcddZRhcOmGPPHEE9YP4rLLLrOD2yc+8YmWapRBWhhQDjvssEad1M8Sab7jdGlkcA4gQFhd5LN3717zy1/+0hKh3/3ud031ONl6Hb700ktG3s57XazgiU9+8pPm5Zdfbmy4F9cEBtO33nrLYsagz3QcJE4wjcvr27UwaUE/9tvif40NCD/88ENz9tlnd0Vt/peIRE0oADZAjHtZ6IqCWmmtEVCLS627t/zGYXGYMGGCOeaYY2y0T3kzLLtmBiiWZ2/YsMFaWVgyGmfliBoE8ujIgzvOIlI0SaK9rj9G3LQS1rAqRzsO9wt9h6XEtUa5aVyn2jL9htw6yz5ud79yHSsjMn/+/NzL+pO2h/vwu9/9riUr7BjczqcrabmaThFIhQCbLKooAnkQCMKb99x9991s1tlz44039gQDTJ7iYvNKXQFB6pk8eXIPvxG+g4G9Zd5gt92W19JcoJ6kZSVNl6Z+SQvGlC8fwYHrAYmLxULKqNK32ybpg6i2V6lNrXSlb5P+D/F/x/9C2f936Bo4n9u6xo0bl1i/Vm3U84pAHgTU4pKK5mniOAR4C7zrrrvslE3wILXm7DgrSFxZ4WuUzTJL3i6HDx9uZs2a1estU6wSYT+Goqwf6EAdSdtEeqQTViixOnzsYx8zp5xyigkeCmEIK/2bN/s///M/N6wyqotVJapDstwz3JPsx4UfEP93WEDD/wNRdSU5R9nLly+3+1yRPquvUZK6NI0ikBSBP0maUNMpAu0QYIAmdkrwtmiTEkGTDxvGQR7SCoMx4cMpg6mRffv22YicEJioBzPz7JynLh64CAMBefMKuiBJSQtpwQM9RBfOlSXoRdv/8Ic/mOCNuKxqulYuZOxP//RPbRvT9EHXFM5QcRbSQjXc9/J/xxQh/i/4wbDlRZb/O/TACZi4LJBEfIaWLFliNyr1dQuGDHBrlgojoBaXCndeFVQneBZ+KBs3brT7HTGoDho0yPpgoD9Ldnk47t+/3zbnwIEDNt22bdvs71GjRpnRo0ebkSNHpnIAhGjwQIdERZEcW3jCPzz84/xZ2hVD/rw6tKtDrkP0du7cGRt8T9JW6RsMsbbVNbhZVtLSqg/5vyOC84svvmg/bFqJM/3QoUMbWYYMGWJ2795tf7f6vzvttNM6YjFsKKUHikACBJS4JABJkxSDAJYHHExZ8cKDEsGKwl467gOVqaA459Ok2jzzzDPms5/9bCoriVu26JuXdFAOA1MnLAVYt5C6hVyvM3EpmrS49zDHch+3+7+DyBxxxBEduU/DOupvRSANAkpc0qClaSuDgAwGWF0gS2nJB/l54BdFNrAAMXWEPmVKXYkLfYFlrm6+O3KfdsIPqsz7TstWBDqJgPq4dBJtratjCDBFJEQB0sIbO4NfEsniz9KuXAiQu5y5XXq93oxA2YSvubbO/JL7TElLZ/DWWuqDgBKX+vSltuQjBKJ8SiAvvN3KG24rsMjLQFLGYCIEqlXder7vICAWuDLus76Dora0ryKgxKWv9nxN2w0xabWKSKZ95E3XhQBrjBCeMt/u0a0deXL10uM/IgBmdRnkhbSUeZ/pfaMI1BkBJS517t0+2DaZImrVdLGmQFJEGBT5pPWDkfxpvqkfkpR02ipN2XVOS7/itF11UdJS9R5U/X1A4OM+KKE61B8BBmp8PFjmLEsvo1otS6VZ4cC+LGnessViElWue443XZm2IWAbgc3EGuOmK+uYupLqmlYHlpdv3bo1bTbv0wfRcr3XsZ2CSlraIaTXFYFkCChxSYaTpsqAAFaMF154wQaRI54EsSSGDRtmY7gQ+TZKWLLJEunFixeb1atXG/YgIvYLmyjGkQvqajVFFFUP51il8vvf/77V5VLPExeGgSyuTVkUGDx4sMU7S16f8xBvhHuhqqKkpao9p3r7iIAuh/axVyquE1E3V65caa0rE7JufpwAABmPSURBVCdONASRO/XUUzMtBZZAWuxAO2DAADNnzpzIYHRpLRikl6BykB4sQkWTiHbdSL1IGqtSuzJpRx2XDRPFlUCE7EhcNVHSUrUeU319R0CJi+89VCH9IBnslYK0Ihh5muMSovvuu68xiKUhLTJlFfZnaXU+j75J8qbRPUl5pCHcOyHaw21Mmt/HdFjTNm/e3HFymRcLJS15EdT8ikBvBJS49MZEz6REAMsBkVrxX3EJRcpiEidnsGc/lkMPPdTMnDnTDtRJrBZJLCtlEIl2DSu6TjDB12X27Nntqq7EdQZ/9qvCQbdKoqSlSr2lulYJAV1VVKXe8lBXrCC82eN/gPNtJ0z51Ld9+3YzduxYO32QZP8aBhGk3XQQZUMksMB0SopcIg05Y0+aH/zgB7YdnWpDmfU88cQThinHKgn3EGRalzxXqddU16ogoBaXqvSUh3ryZr9q1Sq7Y3O3piUgJNdee621vixfvjxyoGAQEX+WpDBSLoNOEktO0jLj0mV9Oyefu+IGEoTOVZ1aicKIqa+FCxeaquxMXLQFLQoTPacI9GUElLj05d7P2HasEVdffbV5//33zaOPPtqxwb2VuugzY8YM884775i1a9c2yEtev5UkU0utdMpyPsmAFyYqrQjZ7bffbpedL1iwIIsq3uQRvyksbFWQJH1YhXaojoqAzwgocfG5dzzUDTIwZswYq5lLEnxQFQvQm2++ackLevJpNzXUTu+85Kdd+e516oIsuTozELrSiqi4aTimHKwu7QLyhfP59nv8+PFmxIgRldjtWkmLb3eP6lNXBJS41LVnS2oXy1LDlo2SqspULOTlpZdeMo888og59thjM5URlYlBKSlpiMqf9Nwzzzxjk7L0G8kzBQcWSFWtLmCOHxO+U777iihpsbea/lEEOoKAEpeOwFyPSph+IJCcb5YWF12mFiAtBJZL4rTr5m13XLTfi1hz3HrFOTgPYZHyqm51YSURxIUVaz6Lkhafe0d1qyMCSlzq2KsltAlCcNVVV9mVKp1yWM3aDAgB01llDHp5/F7CRIVAce60kNveogbDe+65x2zZsqVwEufqWsbxihUrzKJFi+zqsTLKL6rMovqpKH20HEWgLyCgxKUv9HLONjLgMk2CJaMqKzuwjvDGvmbNmlzTLVHQCQFpZxWRdFJGHFGRNPJN3rC/i1xL8005Z511lnVenjRpUpqsXUtbZt8V2SglLUWiqWUpAskRUOKSHKs+mxK/FmTp0qWVwqDst3YGLtfvBaLhBklLQ1SigGUALyIWCOWgJ74irSw8UfV34xxEqyxrWZHtUdJSJJpaliKQDgElLunw6nOpeUBXxUEyqnOwumBpKMPaAFF55ZVXzEEHHWT3UZIYKlF6ZD1X1ABJoMBp06Z5HzYfkvzBBx94PbVVVJ9kvSc0nyLQ1xFQ4tLX74A27a/SctSophRJvLBcRAV7y+P3EqWze66oKSPKdJeL+7hKx3f96AusVu2mCN3+02NFQBEoHgElLsVjWpsSixz0uwkK5OuSSy5JbXUJExV3WijcnjIHNYgRUoRTtJADHwIHuhiKXr6uWCuSQLrt1mNFQBFIj4DuVZQes7Y5TjnlFNOvXz/7YZdeV+Q836+++qp7KfaY/VrcvLGJC7r4wAMPmFmzZnkfQ6Ndc9kSgBUq7QSi5n4gCrxdyyfOSsE10pGfQa5IQQ/XdyZP2cR0GTZsmNUVYtZtASuIpQQOjMO4W7oqaekW8lqvIhCNQCWJC2RABnFIgkrxCPCwXrZsmR1Uii+9syXKSihIhSsuSeFYCIp8ZxlEyYuFRKwkbn15joUU5SlD8kJe2MUbCxIOzN0SiBMrng455BBvYwMpaenW3aH1KgKtEfh460t6pS8jsHHjRjN58uRCpid8wPGv//qvLRFzdYEMlCGs3BHyUsT0jugI0WCwL2JlELt4v/7662bq1Klm3bp1hngvReoqOkd9QwbYEPPv/u7vzMMPP5x6Ci+qzDLOKWkpA1UtUxHIj0AlLS75m11uCT/5yU9MT0+P/TAwVFHWr19v34arqHtYZ4LnfelLX7JTc2JNKYu0SN1CAoqcjhELEANqEQIGW7duNSeeeKLd1wjyUlTZrfRjdRNWFoLi4ehaxmqvVnWnOa+kJQ1amlYR6DACwQBbGdm2bVtPAE/kJ5i379WOBx98sIfzbh7O7d+/PzKtpLv88svt9TvuuKORVzJIGr7Rh8+FF15o01E24tYp51rlf/bZZxv5KZOyOBeWxx9/vKEL6aIkTXuj8rvngoG3J/CrcE9V/rgbbQpWIfUElo1CsSu6PJQLSETPuHHjesDotttuK7TvweCpp57qCQiS/XDss6AveKgoAoqAnwjUcqro3XfftdMczz//fDDGN8s111xjjjzySBOQAzN48ODmi86viy66yETld5LYt9Wbb77ZPZXqGBP9vHnzmvJQJ5+AhFgzftPFFj+KaK9btFgJxGrgXstzjJ7EPdmxY4fdqPHll182AYlsKpK+OfPMM83RRx9tLQFnnHGGOeKII5rSZP0xfPhw87Of/axjUyLo6Trtxq1KStMmLCXik5MmX1xapp/Y24m+x4eMmDTnnnuutYicfvrpqaensFgw3Ugfr1q1yoD9nDlzDFNUPotaWnzuHdVNEfgjArUkLvhmxJEOBsuLL77Y7Nq1yxDdNCyPPfZY+FTk7zykhQLDpMWtBIJ1wgknGAaNdpK3veHyIRgMNEUJ5dHWxYsXty2Svgnjz6qgW265JTeBGTFihNm9e3dXti2AbEAKIDJFEEKIBX40RZTldgoEBuddSAbEgylDsEe4J8AQGTJkSNP/zp49e8yBAwfMW2+9Zd544w1LTgMLjl2GfsMNNxSup1Wi4D9KWgoGVItTBEpCoFI+LgzigeHKWiMED5Z2cg6/EoRlwy5pwXLBdT7BdItks2/67u/GhY8OKDeYBmrkDV+X3zzUpfws/iyt9KN89gZqJ0W1162HwV0GKPd8luPnnnvOYDVJQlpalU9eyqCsPII1h4G1WyJOtWLRyqMHhKWoJdJRekCwsI6wzQP1bN682UAgEQgKfTJ//vzGZ+fOnfba6NGjrcWG/wksOPiwFE2ubEUF/xFnaumjgovX4hQBRaBIBIIHTOUEX44AA/vBn8SV4OHauBaQCveSPW6V1z1P2fiuRInUy7f4woTTJfVxaacfdQSDhC2+lY9L1vaGdXZ/33333T188gq+RAFZaPSHi12WY8qizKyCbwh+HN2WIv1eyvB36TY+na4fX666+XN1GkOtTxHoJAK1myp67bXXgjHxjxJlNRg1apRctkGvgkGkyeQtF5NM0bAPTh4hmmtY8O9whWmWOF+cotrr1olVgjfnvIJvA1M/rmDJCgifjd3BVFiU8PbOfjVMVbjWM8qizJtuuikqW2XOFen3UuQS6coAWKCiEm+nClahAputRSkClUagdsSFCJwi+LG0kyjiwuCaRPr3758kWcs0UU6nYZ8b9IuTItobLh/SEKVbOF273xAPV5iau+yyy9xTkcdCGiEoRBd2/W0os+rERRpdhN8LJAjBP0OOpXz9jkdASUs8PnpVEfAVgUr5uPgKouoVjYBrLcEXKAlpCZcEiSGviFumnKvyt/hU5PF7oQxioqgkR0BJS3KsNKUi4BsCtSMurrXEda4N5t8aTrTucRGWhaydihNsWMIWlnb6ldFeQrAzRVWkDBo0KHNxefJmrrSDGZmm4BPekiCNCrJEOk2evppWSUtf7Xltd10QqN1U0WmnnWZ9V+ggfCVk2sHHDiN6KPFiXCHuhQirYNoRlzLaO3To0F6+KaJT1m9WpWRZdUV95K27FOH3UtYSabDHIsSSZ/yM9u3bZ/bu3dvUJZBd7humT/HJgkj5KEpafOwV1UkRSIdA5S0u7733XlOLzznnnMZvYqG4uzNjRbjuuuu82aCR2CaufixtRmeRK6+8Ug5bfpfVXpa85hWccEWIzXLnnXeasEVJrkd9kxZ83LgubplReeLOMfAywPosDPgMrjLAptEVqw2+LnzyCmUQnn/KlCk2GN2ECRPMypUrbbEDBw60u4azc7h8xJmblwXOsQkqzutsI5ClLXn1j8oveqgjbhQ6ek4RqA4Clbe48AbIQ5IpE2K54EdBfAlxWoUIuGTA7RoesN2WOP0kbkacjmW0l+BieeKuiL4MXC7pIGAfn2BbA3PooYfagU3Sut9YWN5///2mFUVyPc9KLsgYVgHfBZ8VBlmsHOIDk1Rn0ueJqktenKgXLlxoJIBcsAVA21gsYQsLxCdYqm02bNhgrS/odf3113ctcq6SlqR3kKZTBCqAQCfXXhdVF3v5BNA2fQLi0ig+IDNN+/+E0/KbuC2uuHFc3LLcNBy7ZRFbJUrIL+nC9ch5vt29kNzzHIfztYrjQv1Z2hult5wjpkXwVio/M38Tg0b2cQq3L8tvypK4NlmUIoZLsCopS9au5AksTpn2zMmST2Lc0O/E8Ckyrgn6dHOvIo3T0pXbVytVBEpDAIfVSgoDuxvcLIpskCY8cBL0LSq4HGllMI0qS0CSNHznJS4QDspwiQ765tlkMWl7pT2tvhnAithoLnBA7tUHLoZJj2kXZeUR6ipyQM6jS9K8DPpZgswlHawpn00VhbDwu0wRAhPsg1TI/dVOV+7hqvV5uzbpdUWgryNQWeLS1zuu7PYH+x/1PPzww4VVAzF0CVpSwkIe8uYVLC3sTlxVgbykJRXtCA/XwQRLVKcHd6w63ANFRGhu1aeQlrSYtSpLzysCioA/CPRDleABoqIINCGAY+a9995b+IoeHKTZIRp/k5/+9Kfm17/+dVO9n/nMZ8zJJ59sV6cUuTP07bffbuuZPXt2U31V+oHPC6uPAutIYrVb+busWLHCxsfBQZz9hLohtAc/LnYCX7RoUaEB9CgbnDQoXzd6VutUBMpFQIlLufhWtnScK4niG7yJpxoofW0wS4Vx+k3r7Opbe3AypW+StiPKKXXmzJl26wQf8KAtM2bMMO+8845Zu3ZtIURDSYtvd63qowgUi0Dll0MXC4eWJgjwpnrjjTeaZcuWyanKfmM9GjBgQOLB3ueGYkXgkzRYHWkhB3wQSAsr7oi0m5T8lIkH9xk7UAdTgmbMmDENPbPWqaQlK3KaTxGoDgJqcalOX3VcUwbHsWPH2kGuyiZ3pp6mTZtmAr+djmNYZoX0D5ssJukb0gaO4Ja0FGXZKLptQqqy6qekpege0fIUAT8RUIuLn/3ihVbE5mCDw+XLl3uhTxYlsLbgxsWu4Aze7idLeT7lSROsjuB77Kz96KOPJiI63WjnggULrL/L1Vdfnbp6JS2pIdMMikBlEVCLS2W7rjOKM9BjdeGbaYeqyUknnWTmzJkTGfiMNrmCT48P0yeuTkmO2/m9MKhjmfFleiiuTUxpMWUULJc2SR2plbTEIarXFIH6IaDEpX59WniLMOF/8MEH1heh8MJLLJBw82vWrEm8MopBk8HdlaRTMW6ebhyL7lERbM866yzrANut1UNp8YCIECGZvgu3J1yWkpYwIvpbEag/Akpc6t/HuVvIoMgAft9990VaLnJXUEIBRVkZKCeIBdKkYbvBtClxh39gRXLJFsvAd+zYYZ588skOa5KvOpZrs0R6+/btLQsKt7VlQr2gCCgCtUJAiUuturO8xjBIMGXkwxLadq2EaJVpZQhPMbHU2qdpNMiWOOyiW1WXtGN14Z6bPn16ry6nD3wmkL0U1hOKgCJQGAJKXAqDsv4FMfXy0EMPma1btzYGRh9bzYDH8lqcPTsh+JhADlxxrR7u+U4do9Ott95qjjrqqMS+Ip3SLWk9QpaZvhMiRl4lLUkR1HSKQD0RUOJSz34trVV5l6yWpthHBfuiX3iKqdOOvxAXrC3oceyxx5YNe2nljx8/3owYMaJhdVHSUhrUWrAiUBkElLhUpqv8UdQXcuAiwvTQ3LlzvY1TIs6zrs5lTjHRR0inrE5uu4o8hqhMnTrV+rooaSkSWS1LEaguAkpcqtt3XdWcgTHYuNAGNev2EmJIAUtokazBy7oBZtQUU1F+G5CiKvgjJcGdJe3XXHONue6665Ik1zSKgCJQcwQ+XvP2afNKQoA3eXxe8Cfp5moj3sJx4Jw4caKN1+L6QpTU9MKKxaE37NRLe1zJMsW0adMmG4+m24TSbUee42D3aruXUZ4yNK8ioAjUBwG1uNSnL7vSEiEORKa97bbbeg3EZSmFleW73/2uuf/++003dzguq31SbtQUUzvHX6xh/fv3r6xTrrRdvvHTgSCHHaDlun4rAopA30JAiUvf6u9SWsvgin8JIeVnzZplCNlepuWDMP7Ud8wxx1irT9hqUUojPSo07PiLau4UE1MrS5YsaTrnkfqZVKnT1FcmADSTIqAINBBQ4tKAQg/yIoD1Zf78+Wbbtm2WwLAipChSATl66qmnbFAy9Fy4cKE5//zz86pcm/wyxfThhx+ac845p7KxW1p1yJQpU2xsnqpE/23VDj2vCCgC+RHQTRbzY6glfIQAb/1EaCVU+759++xyXAYcoqDiiJpWICtYVygDX49169ZZwkI0VSUtzWiCPZ+DDjrI4BOCYJmpiwwdOtTeU3Vpj7ZDEVAEsiOgFpfs2GnONghAPFh5tH79erNhwwYzYMAAO71DXA6EnaddYQfjAwcOmLfeesu88cYbNlQ9g/All1xiLrjggsKsN26ddTuGJBIgcOnSpbVqGg7HixcvrtzWBbXqBG2MIuAJArqqyJOOqKMa+Llceumljf2NsABATvbv328JCtNKrgwaNMgMHDjQjB492nzjG9+olY+G284yjyF+WCfqJljcVBQBRUARAAElLnofdAwBlufWZYlux0DTiiwCOOfiO6WiCCgCioD6uOg9oAgoAt4jgJN3Fj8p7xumCioCikBqBJS4pIZMMygCioAioAgoAopAtxBQ4tIt5LVeRUARSIyAWlsSQ6UJFYHaI6DEpfZdrA1UBKqPAFFzZZl39VujLVAEFIE8CChxyYOe5lUEPEOAUP/E0FFRBBQBRaCuCChxqWvParv6JAKDBw82e/furV3bWVF04okn1q5d2iBFQBFIj4ASl/SYaQ5FwFsE2IBx9erV3uqXVTGCEhLjR0URUAQUASUueg8oAjVCgKB/WCbqFO6f7iGS8umnn16jntKmKAKKQFYElLhkRU7zKQKeIjBy5Ejz3HPPeapderUgYe+9954GL0wPneZQBGqJgBKXWnarNqovIzBq1Ci70WVdMHj11VfNxIkT69IcbYcioAjkRECJS04ANbsi4BsC7JyNlaIusU8WLVpkIGMqioAioAiAgBIXvQ8UgRoigIXirrvuqnzLfvzjH9tpIsiYiiKgCCgCINCvJxCFQhFQBOqFANaWL37xi+bnP/+5wWG3qjJ+/HgzYsQIM3369Ko2QfVWBBSBghFQi0vBgGpxioAPCLAp4fDhw83y5ct9UCeTDlhbiN9y9dVXZ8qvmRQBRaCeCKjFpZ79qq1SBKyfC3FdCJcPkamaqLWlaj2m+ioCnUFALS6dwVlrUQQ6jsDnPvc5c9ttt1VymmXFihXm7bffVmtLx+8arVAR8B8Btbj430eqoSKQGYHf/va3BqvLvHnzzKRJkzKX08mM4p+zZs0a66fTybq1LkVAEfAfASUu/veRaqgI5EIAX5GxY8eazZs3VyKI23nnnWfOPfdcM3v27Fzt1syKgCJQTwR0qqie/aqtUgQaCLC6aNasWWbChAkGC4zPMnPmTKuekhafe0l1UwS6i4BaXLqLv9auCHQMAUjBm2++adauXevlEmn027hxo9m6dauX+nWso7QiRUARiEVALS6x8OhFRaA+CCxYsMAMGzbMjBkzxjvLC6Rl1apV5vHHH1fSUp9bTluiCJSCgBKXUmDVQhUBPxFwyYsPO0gzdSWWoKr44PjZs6qVItB3EFDi0nf6WluqCFgEIC84v+IEu2nTpq6hwuohrD8yfcXybRVFQBFQBNohoMSlHUJ6XRGoIQI4vz7yyCPmqquuMlOmTOn41BFxWnAahkBhaanytgQ1vD20SYqA1wgocfG6e1Q5RaA8BNi4kL2MEGK93HPPPeVV9lHJLM3G0sOOz8Rp0dVDpUOuFSgCtUNAVxXVrku1QYpAegQgFPPnz7fRar/+9a/biLVFWkGefvpps3LlSrv3UJWC4aVHUnMoAopA2QgocSkbYS1fEagQAhCYBx54wCxbtsxMnjzZjB492owcOTLTVA5lPfvss+b+++83AwYMMDNmzDBf/vKXM5VVIQhVVUVAESgZASUuJQOsxSsCVUQAx9kXXnjBrFu3zqxevdr6orCUeuDAgWbIkCHm4IMP7tUsdnI+cOCA2bFjh81z4oknmnHjxpnLLrusEhF7ezVITygCioCXCChx8bJbVClFwC8EsJ7s2bPHEpMtW7ZEKjdo0KAGsTnuuOMquSN1ZMP0pCKgCHiFgBIXr7pDlVEEFAFFQBFQBBSBOAR0VVEcOnpNEVAEFAFFQBFQBLxCQImLV92hyigCioAioAgoAopAHAJKXOLQ0WuKgCKgCCgCioAi4BUCSly86g5VRhFQBBQBRUARUATiEFDiEoeOXlMEFAFFQBFQBBQBrxBQ4uJVd6gyioAioAgoAoqAIhCHgBKXOHT0miKgCCgCioAioAh4hYASF6+6Q5VRBBQBRUARUAQUgTgElLjEoaPXFAFFQBFQBBQBRcArBP4fntNQJrCufL0AAAAASUVORK5CYII=\n",
      "text/plain": [
       "<IPython.core.display.Image object>"
      ]
     },
     "execution_count": 19,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "review = \"The movie was excellent\"\n",
    "\n",
    "Image(filename='sentiment_network_pos.png')"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Project 2: Creating the Input/Output Data<a id='project_2'></a>\n",
    "\n",
    "**TODO:** Create a [set](https://docs.python.org/3/tutorial/datastructures.html#sets) named `vocab` that contains every word in the vocabulary."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 24,
   "metadata": {},
   "outputs": [],
   "source": [
    "# TODO: Create set named \"vocab\" containing all of the words from all of the reviews\n",
    "vocab = set(total_counts.keys())"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Run the following cell to check your vocabulary size. If everything worked correctly, it should print **74074**"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 25,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "74074\n"
     ]
    }
   ],
   "source": [
    "vocab_size = len(vocab)\n",
    "print(vocab_size)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Take a look at the following image. It represents the layers of the neural network you'll be building throughout this notebook. `layer_0` is the input layer, `layer_1` is a hidden layer, and `layer_2` is the output layer."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 26,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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/73dgOz444+vJH/NVBFQBNqDgFos2lOXg0rCviEXXHCB2bBhw6D7eqEIhCEgs0LUwhWGjt5TBBSBJAioj0UStBoUVsbNf/jDHzZIa1W1KgQgFEoqqkJf81UE2oWAEot21eeg0uCI98ADDwy6pxeKgCKgCCgCikCRCOhQSJHoVpy2bkxWcQVo9oqAIqAI9CECSixaXuknnniiYcEjXZug5RUds3gMjW3evNm8/vrrZsuWLeatt94yGzduHBKb1Td32WUXs99++5mxY8eaT3/607pr7hCU9IYioAiEIaDEIgyVFt1joawbb7zRrF27tkWl0qIkQQBH3scff9yuyDp8+HAzceJEs++++5oxY8bYacksqOYKli6mKr/zzjtm06ZN5tlnn7U/yAazRr7whS8oyXAB03NFQBEYhIASi0FwtO+CNS0+8YlPGHqq6pzXvvqNKhH1ftddd5k777zTBpk7d645+uijU78DpLdmzRrz2GOP2fUumHH01a9+NXV6UXrrfUVAEWg+Auq82fw67FqCj3zkI4a9IJYuXdo1nD5sDwLsVgqZfO6558ztt99upxyffvrpmUgA7xHDaXfccYe1ZoAWm5ddeOGFgzYwaw+KWhJFQBFIi4ASi7TINSjerFmzzMqVKxuksaqaBgGsUvvvv7959NFH7Y8dSg866KA0SXWNg+WL3XMZLkHI45577ukaRx8qAopA/yCgxKIP6lrG0BlrV2knAlgppk6dahjywJ+mCELhIycEAyKzePFig6MwQyYqioAi0N8IKLHok/qnwVm+fHmflLZ/iklDzj4fNO4QCoY8yhZIzLp168yIESPsEMybb75ZtgqanyKgCNQIAXXerFFlFKmKrmlRJLrVpA2pmDJlitl1112toyZ+EFULQyKXXHKJJTliKataJ81fEVAEykVALRbl4l1ZbpitZ86caR5++OHKdNCM80NASMUBBxxg8KWoA6mgdFhMbrrpJnPkkUcatVzkV9+akiLQJASUWDSptjLqyuwQdbLLCGINorukAifKugmzR5Rc1K1WVB9FoDwEdCikPKxrkRNTBBmLVzN1LaojlRJM8Vy/fr2tx1QJlBQJEotTJ/4XdbGolFR0zUYR6GsE1GLRZ9V/9tln27UN+qzYrSkujTVOuKtWrap9mRgW+dSnPmXOOOOM2uuqCioCikB+CKjFIj8sG5ES496M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\n",
      "text/plain": [
       "<IPython.core.display.Image object>"
      ]
     },
     "execution_count": 26,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "from IPython.display import Image\n",
    "Image(filename='sentiment_network_2.png')"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "**TODO:** Create a numpy array called `layer_0` and initialize it to all zeros. You will find the [zeros](https://docs.scipy.org/doc/numpy/reference/generated/numpy.zeros.html) function particularly helpful here. Be sure you create `layer_0` as a 2-dimensional matrix with 1 row and `vocab_size` columns. "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 28,
   "metadata": {},
   "outputs": [],
   "source": [
    "# TODO: Create layer_0 matrix with dimensions 1 by vocab_size, initially filled with zeros\n",
    "layer_0 = np.zeros((1,vocab_size))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Run the following cell. It should display `(1, 74074)`"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 29,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(1, 74074)"
      ]
     },
     "execution_count": 29,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "layer_0.shape"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 30,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAiIAAAFKCAYAAAAg+zSAAAAABGdBTUEAALGPC/xhBQAAACBjSFJNAAB6JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAB1WlUWHRYTUw6Y29tLmFkb2JlLnhtcAAAAAAAPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iWE1QIENvcmUgNS40LjAiPgogICA8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPgogICAgICA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIgogICAgICAgICAgICB4bWxuczp0aWZmPSJodHRwOi8vbnMuYWRvYmUuY29tL3RpZmYvMS4wLyI+CiAgICAgICAgIDx0aWZmOkNvbXByZXNzaW9uPjE8L3RpZmY6Q29tcHJlc3Npb24+CiAgICAgICAgIDx0aWZmOk9yaWVudGF0aW9uPjE8L3RpZmY6T3JpZW50YXRpb24+CiAgICAgICAgIDx0aWZmOlBob3RvbWV0cmljSW50ZXJwcmV0YXRpb24+MjwvdGlmZjpQaG90b21ldHJpY0ludGVycHJldGF0aW9uPgogICAgICA8L3JkZjpEZXNjcmlwdGlvbj4KICAgPC9yZGY6UkRGPgo8L3g6eG1wbWV0YT4KAtiABQAAQABJREFUeAHtnXvQXVV5/1daZxy1BUpJp1MhE5BSSSAgqBAV5BIuGaQJBoEUATEJAiXYcMsUTfMDK9MAMXKRAEmAgGkASUiGIgQSsEQgKGDCJV6GYkywfzRWibc/OuO8v/1Zuo7r3e/e5+zr2ZfzfWbOe/bZe12e9V373eu7n/WsZ40aCsRIhIAQEAJCQAgIASFQAQJ/UkGdqlIICAEhIASEgBAQAhYBERHdCEJACAgBISAEhEBlCIiIVAa9KhYCQkAICAEhIARERHQPCAEhIASEgBAQApUhICJSGfSqWAgIASEgBISAEBAR0T0gBISAEBACQkAIVIaAiEhl0KtiISAEhIAQEAJCQERE94AQEAJCQAgIASFQGQIiIpVBr4qFgBAQAkJACAgBERHdA0JACAgBISAEhEBlCIiIVAa9KhYCQkAICAEhIARERHQPCAEhIASEgBAQApUhICJSGfSqWAgIASEgBISAEBAR0T0gBISAEBACQkAIVIaAiEhl0KtiISAEhIAQEAJCQERE94AQEAJCQAgIASFQGQIiIpVBr4qFgBAQAkJACAgBERHdA0JACAgBISAEhEBlCIiIVAa9KhYCQkAICAEhIARERHQPCAEhIASEgBAQApUhICJSGfSqWAgIASEgBISAEBAR0T0gBISAEBACQkAIVIaAiEhl0KtiISAEhIAQEAJCQERE94AQEAJCQAgIASFQGQIiIpVBr4qFgBAQAkJACAgBERHdA0JACAgBISAEhEBlCIiIVAa9KhYCQkAICAEhIARERHQPCAEhIASEgBAQApUhICJSAPQXX3yxGTVqlPnlL39ZQGkqQggIASEgBITA4CAgIjI4fR3Z0iVLlpgHH3ww8ppOCgEhIASEgBAoG4FRQ4GUXYnKry8CJ510knnf+95nbrvttvoqKc2EgBAQAkKgtQjIItLarlXDhIAQEAJCQAjUHwERkfr3kTQUAkJACAgBIdBaBERECuhanFXHjBkzrKR169ZZB9atW7daHwymQHBodZ8bbrhhWHp+kJbr+G1wHM7Db65FiV9f1HXOoSO6ItRPXU888YRZvHhxRy853Fp49EcICAEhIAT6hICISMlAz5kzxyxbtszMmDHD4I7D5/HHHzfr16+3RCOq+u9973tm/Pjx5oMf/GAnD/kmTZpkLrjgAjN9+vSobKnOXXnllbbsE0880Vx00UWdenbbbbdU5SixEBACQkAICIE8CLwjT2bl7Y3Az372M/P0008bf4DHsrHPPvtYsoGFY9asWcMKwkJx5513jjgPeTjqqKPMxIkTzWGHHWb4LRECQkAICAEh0GQEZBEpufcuvPDCYSTEVTdu3DhLRrZt2+ZOdb4hGWFy4i4eeeSR1oJxyy23uFP6FgJCQAgIASHQWAREREruuoMPPrhrDb/4xS9GXD/rrLNGnPNPHHPMMWbHjh1m06ZN/mkdCwEhIASEgBBoHAIiIiV3mT8lk7SqPfbYo2vS3Xff3V7ftWtX13S6KASEgBAQAkKg7giIiNS9h7roJyLSBRxdEgJCQAgIgUYgICJSw256++23u2q1fft2ez28ZLhrJl0UAkJACAgBIVBDBEREatgp999/f1etnnrqKevoiuNqWOLigOBPgl+J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\n",
      "text/plain": [
       "<IPython.core.display.Image object>"
      ]
     },
     "execution_count": 30,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "from IPython.display import Image\n",
    "Image(filename='sentiment_network.png')"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "`layer_0` contains one entry for every word in the vocabulary, as shown in the above image. We need to make sure we know the index of each word, so run the following cell to create a lookup table that stores the index of every word."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 31,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "{'': 0,\n",
       " 'lovelock': 1,\n",
       " 'oana': 2,\n",
       " 'placidly': 3,\n",
       " 'mcintire': 4,\n",
       " 'equates': 5,\n",
       " 'hohenzollern': 6,\n",
       " 'zaire': 7,\n",
       " 'meaningfully': 8,\n",
       " 'niceness': 9,\n",
       " 'dooms': 10,\n",
       " 'guidos': 11,\n",
       " 'newspeak': 12,\n",
       " 'prohibited': 13,\n",
       " 'footnotes': 14,\n",
       " 'furbies': 15,\n",
       " 'gargoyle': 16,\n",
       " 'scraps': 17,\n",
       " 'onofrio': 18,\n",
       " 'denounces': 19,\n",
       " 'devistation': 20,\n",
       " 'excuse': 21,\n",
       " 'fiennes': 22,\n",
       " 'crossroads': 23,\n",
       " 'schiffer': 24,\n",
       " 'gandhi': 25,\n",
       " 'recess': 26,\n",
       " 'jibe': 27,\n",
       " 'observance': 28,\n",
       " 'damen': 29,\n",
       " 'appealing': 30,\n",
       " 'nonono': 31,\n",
       " 'puposelessly': 32,\n",
       " 'whereupon': 33,\n",
       " 'klown': 34,\n",
       " 'pranked': 35,\n",
       " 'cabins': 36,\n",
       " 'totall': 37,\n",
       " 'fighter': 38,\n",
       " 'border': 39,\n",
       " 'busts': 40,\n",
       " 'indestructibility': 41,\n",
       " 'cemented': 42,\n",
       " 'crusoe': 43,\n",
       " 'tomfoolery': 44,\n",
       " 'luther': 45,\n",
       " 'jot': 46,\n",
       " 'jd': 47,\n",
       " 'stoopid': 48,\n",
       " 'haydn': 49,\n",
       " 'avantguard': 50,\n",
       " 'ignores': 51,\n",
       " 'odeon': 52,\n",
       " 'peckinpaugh': 53,\n",
       " 'androids': 54,\n",
       " 'timeslip': 55,\n",
       " 'aversion': 56,\n",
       " 'unsubstantiated': 57,\n",
       " 'skeptically': 58,\n",
       " 'mikel': 59,\n",
       " 'defrauds': 60,\n",
       " 'karel': 61,\n",
       " 'homeric': 62,\n",
       " 'tro': 63,\n",
       " 'implausibly': 64,\n",
       " 'mutt': 65,\n",
       " 'uninflected': 66,\n",
       " 'mechanism': 67,\n",
       " 'kroona': 68,\n",
       " 'blackwell': 69,\n",
       " 'blaznee': 70,\n",
       " 'pillaging': 71,\n",
       " 'maltese': 72,\n",
       " 'ghostintheshell': 73,\n",
       " 'publisher': 74,\n",
       " 'moderators': 75,\n",
       " 'exhaling': 76,\n",
       " 'nutty': 77,\n",
       " 'rebours': 78,\n",
       " 'marchers': 79,\n",
       " 'nnette': 80,\n",
       " 'gonzales': 81,\n",
       " 'fic': 82,\n",
       " 'eclectic': 83,\n",
       " 'conversations': 84,\n",
       " 'badest': 85,\n",
       " 'pegs': 86,\n",
       " 'slotted': 87,\n",
       " 'verandah': 88,\n",
       " 'romasantathe': 89,\n",
       " 'outfits': 90,\n",
       " 'sleepiness': 91,\n",
       " 'elapse': 92,\n",
       " 'numbers': 93,\n",
       " 'poptart': 94,\n",
       " 'kotia': 95,\n",
       " 'promulgated': 96,\n",
       " 'passages': 97,\n",
       " 'godot': 98,\n",
       " 'resurgence': 99,\n",
       " 'socialist': 100,\n",
       " 'excpet': 101,\n",
       " 'panhandling': 102,\n",
       " 'manoy': 103,\n",
       " 'wildebeests': 104,\n",
       " 'superstore': 105,\n",
       " 'apologizing': 106,\n",
       " 'odysseys': 107,\n",
       " 'curves': 108,\n",
       " 'confiscation': 109,\n",
       " 'outstading': 110,\n",
       " 'copyist': 111,\n",
       " 'franaise': 112,\n",
       " 'hypnosis': 113,\n",
       " 'shouldering': 114,\n",
       " 'accost': 115,\n",
       " 'gatling': 116,\n",
       " 'peine': 117,\n",
       " 'peck': 118,\n",
       " 'rivalskeaton': 119,\n",
       " 'derisory': 120,\n",
       " 'svet': 121,\n",
       " 'nietzsche': 122,\n",
       " 'prozac': 123,\n",
       " 'gabe': 124,\n",
       " 'jiminy': 125,\n",
       " 'delineation': 126,\n",
       " 'priesthood': 127,\n",
       " 'sonnenschein': 128,\n",
       " 'peritonitis': 129,\n",
       " 'tomlinson': 130,\n",
       " 'goebels': 131,\n",
       " 'patten': 132,\n",
       " 'coooofffffffiiiiinnnnn': 133,\n",
       " 'urine': 134,\n",
       " 'privilege': 135,\n",
       " 'reversion': 136,\n",
       " 'manifestly': 137,\n",
       " 'explorer': 138,\n",
       " 'parisian': 139,\n",
       " 'mme': 140,\n",
       " 'abos': 141,\n",
       " 'series': 142,\n",
       " 'hayseeds': 143,\n",
       " 'parhat': 144,\n",
       " 'attended': 145,\n",
       " 'breaker': 146,\n",
       " 'flubbing': 147,\n",
       " 'ilka': 148,\n",
       " 'entertainment': 149,\n",
       " 'letheren': 150,\n",
       " 'corporal': 151,\n",
       " 'mirroed': 152,\n",
       " 'anjane': 153,\n",
       " 'masquerading': 154,\n",
       " 'shabnam': 155,\n",
       " 'nebraska': 156,\n",
       " 'attaching': 157,\n",
       " 'operator': 158,\n",
       " 'sleepwalkers': 159,\n",
       " 'pooja': 160,\n",
       " 'klebb': 161,\n",
       " 'simpons': 162,\n",
       " 'hoven': 163,\n",
       " 'producing': 164,\n",
       " 'wayside': 165,\n",
       " 'misleadingly': 166,\n",
       " 'fury': 167,\n",
       " 'mcshane': 168,\n",
       " 'karloff': 169,\n",
       " 'bakesfield': 170,\n",
       " 'uncannily': 171,\n",
       " 'tudman': 172,\n",
       " 'anee': 173,\n",
       " 'kampala': 174,\n",
       " 'bashing': 175,\n",
       " 'unnecessity': 176,\n",
       " 'economically': 177,\n",
       " 'brawling': 178,\n",
       " 'regurgitation': 179,\n",
       " 'filmometer': 180,\n",
       " 'netlaska': 181,\n",
       " 'scattergood': 182,\n",
       " 'frankenhimer': 183,\n",
       " 'dayglo': 184,\n",
       " 'ravingly': 185,\n",
       " 'caspers': 186,\n",
       " 'bolla': 187,\n",
       " 'hoon': 188,\n",
       " 'hebrew': 189,\n",
       " 'reorganized': 190,\n",
       " 'usaf': 191,\n",
       " 'revives': 192,\n",
       " 'beatlemaniac': 193,\n",
       " 'sincronicity': 194,\n",
       " 'longer': 195,\n",
       " 'haven': 196,\n",
       " 'jadoo': 197,\n",
       " 'pasa': 198,\n",
       " 'albeit': 199,\n",
       " 'tenderfoot': 200,\n",
       " 'shefali': 201,\n",
       " 'mancuso': 202,\n",
       " 'couer': 203,\n",
       " 'directionand': 204,\n",
       " 'overhyping': 205,\n",
       " 'hujan': 206,\n",
       " 'skinemax': 207,\n",
       " 'antedote': 208,\n",
       " 'hb': 209,\n",
       " 'vinny': 210,\n",
       " 'chiller': 211,\n",
       " 'moguls': 212,\n",
       " 'glickenhaus': 213,\n",
       " 'fastforward': 214,\n",
       " 'berk': 215,\n",
       " 'field': 216,\n",
       " 'brooke': 217,\n",
       " 'skyrocket': 218,\n",
       " 'sindbad': 219,\n",
       " 'zoinks': 220,\n",
       " 'hyung': 221,\n",
       " 'oddjob': 222,\n",
       " 'lemongelli': 223,\n",
       " 'esau': 224,\n",
       " 'pardoning': 225,\n",
       " 'quo': 226,\n",
       " 'weakness': 227,\n",
       " 'haunted': 228,\n",
       " 'shuddering': 229,\n",
       " 'su': 230,\n",
       " 'ova': 231,\n",
       " 'superbly': 232,\n",
       " 'brulier': 233,\n",
       " 'punted': 234,\n",
       " 'jerzee': 235,\n",
       " 'congenial': 236,\n",
       " 'visials': 237,\n",
       " 'mein': 238,\n",
       " 'uninvolving': 239,\n",
       " 'elucidation': 240,\n",
       " 'cassandras': 241,\n",
       " 'saskatchewan': 242,\n",
       " 'indebted': 243,\n",
       " 'kia': 244,\n",
       " 'occupations': 245,\n",
       " 'eggbert': 246,\n",
       " 'popistasu': 247,\n",
       " 'stances': 248,\n",
       " 'shine': 249,\n",
       " 'cartographer': 250,\n",
       " 'ubernerds': 251,\n",
       " 'tasha': 252,\n",
       " 'comcast': 253,\n",
       " 'total': 254,\n",
       " 'kevloun': 255,\n",
       " 'ishq': 256,\n",
       " 'only': 257,\n",
       " 'nutters': 258,\n",
       " 'ridgeley': 259,\n",
       " 'stalinson': 260,\n",
       " 'exploding': 261,\n",
       " 'readjusted': 262,\n",
       " 'leaner': 263,\n",
       " 'misrepresentative': 264,\n",
       " 'flicking': 265,\n",
       " 'problem': 266,\n",
       " 'exporters': 267,\n",
       " 'wails': 268,\n",
       " 'irrationally': 269,\n",
       " 'manning': 270,\n",
       " 'popcorncoke': 271,\n",
       " 'swell': 272,\n",
       " 'unpalatably': 273,\n",
       " 'evoke': 274,\n",
       " 'guidances': 275,\n",
       " 'giuliana': 276,\n",
       " 'lapping': 277,\n",
       " 'inward': 278,\n",
       " 'fluffer': 279,\n",
       " 'instructions': 280,\n",
       " 'flushes': 281,\n",
       " 'unleash': 282,\n",
       " 'illustrator': 283,\n",
       " 'immature': 284,\n",
       " 'wilosn': 285,\n",
       " 'monday': 286,\n",
       " 'scaffold': 287,\n",
       " 'gorgous': 288,\n",
       " 'success': 289,\n",
       " 'floundering': 290,\n",
       " 'ramundo': 291,\n",
       " 'caters': 292,\n",
       " 'practically': 293,\n",
       " 'darts': 294,\n",
       " 'keeper': 295,\n",
       " 'panhandle': 296,\n",
       " 'exhibited': 297,\n",
       " 'provoke': 298,\n",
       " 'requesting': 299,\n",
       " 'yolande': 300,\n",
       " 'favorites': 301,\n",
       " 'desposal': 302,\n",
       " 'journeyed': 303,\n",
       " 'extraordinaire': 304,\n",
       " 'lightheartedly': 305,\n",
       " 'velde': 306,\n",
       " 'perceived': 307,\n",
       " 'wormed': 308,\n",
       " 'appollo': 309,\n",
       " 'bbc': 310,\n",
       " 'tremble': 311,\n",
       " 'spoler': 312,\n",
       " 'krecmer': 313,\n",
       " 'ahet': 314,\n",
       " 'dary': 315,\n",
       " 'fizzled': 316,\n",
       " 'peru': 317,\n",
       " 'devils': 318,\n",
       " 'strife': 319,\n",
       " 'judders': 320,\n",
       " 'flynnish': 321,\n",
       " 'victis': 322,\n",
       " 'genina': 323,\n",
       " 'crunches': 324,\n",
       " 'innuendo': 325,\n",
       " 'frears': 326,\n",
       " 'thomas': 327,\n",
       " 'privatizing': 328,\n",
       " 'debuted': 329,\n",
       " 'outletbut': 330,\n",
       " 'mikeandvicki': 331,\n",
       " 'kermy': 332,\n",
       " 'bobby': 333,\n",
       " 'bargo': 334,\n",
       " 'squishing': 335,\n",
       " 'luridly': 336,\n",
       " 'joy': 337,\n",
       " 'tor': 338,\n",
       " 'bolero': 339,\n",
       " 'russia': 340,\n",
       " 'sundance': 341,\n",
       " 'wounderfull': 342,\n",
       " 'motel': 343,\n",
       " 'kirst': 344,\n",
       " 'ankles': 345,\n",
       " 'olympiad': 346,\n",
       " 'iconic': 347,\n",
       " 'comedown': 348,\n",
       " 'overemotes': 349,\n",
       " 'builders': 350,\n",
       " 'tempt': 351,\n",
       " 'oblivious': 352,\n",
       " 'tier': 353,\n",
       " 'looooonnnggg': 354,\n",
       " 'nevsky': 355,\n",
       " 'arclight': 356,\n",
       " 'nakedness': 357,\n",
       " 'kaspar': 358,\n",
       " 'miscounted': 359,\n",
       " 'gingerale': 360,\n",
       " 'commensurate': 361,\n",
       " 'conventionally': 362,\n",
       " 'fifthly': 363,\n",
       " 'miniaturized': 364,\n",
       " 'arthritis': 365,\n",
       " 'disease': 366,\n",
       " 'burner': 367,\n",
       " 'virago': 368,\n",
       " 'sluzbenom': 369,\n",
       " 'wunderkinds': 370,\n",
       " 'macau': 371,\n",
       " 'muppeteers': 372,\n",
       " 'paperback': 373,\n",
       " 'err': 374,\n",
       " 'faith': 375,\n",
       " 'patinkin': 376,\n",
       " 'lipper': 377,\n",
       " 'emboldened': 378,\n",
       " 'apparition': 379,\n",
       " 'ellipses': 380,\n",
       " 'preys': 381,\n",
       " 'einer': 382,\n",
       " 'reluctantly': 383,\n",
       " 'hypnotise': 384,\n",
       " 'morano': 385,\n",
       " 'manage': 386,\n",
       " 'uncontrollably': 387,\n",
       " 'bergenon': 388,\n",
       " 'shoved': 389,\n",
       " 'margret': 390,\n",
       " 'oldie': 391,\n",
       " 'shoddy': 392,\n",
       " 'revitalized': 393,\n",
       " 'proscriptions': 394,\n",
       " 'wondering': 395,\n",
       " 'snarl': 396,\n",
       " 'grimms': 397,\n",
       " 'batrice': 398,\n",
       " 'triplettes': 399,\n",
       " 'brownie': 400,\n",
       " 'trentin': 401,\n",
       " 'evocation': 402,\n",
       " 'offshoot': 403,\n",
       " 'allahabad': 404,\n",
       " 'gifford': 405,\n",
       " 'houswives': 406,\n",
       " 'nrnberg': 407,\n",
       " 'knightley': 408,\n",
       " 'appropriates': 409,\n",
       " 'sympathizer': 410,\n",
       " 'perseus': 411,\n",
       " 'pilar': 412,\n",
       " 'gaspingly': 413,\n",
       " 'snatch': 414,\n",
       " 'throlls': 415,\n",
       " 'enforced': 416,\n",
       " 'virgine': 417,\n",
       " 'technocratic': 418,\n",
       " 'polson': 419,\n",
       " 'spaceship': 420,\n",
       " 'frequent': 421,\n",
       " 'lozano': 422,\n",
       " 'debrise': 423,\n",
       " 'duskfall': 424,\n",
       " 'landscaping': 425,\n",
       " 'walt': 426,\n",
       " 'undyingly': 427,\n",
       " 'lovelorn': 428,\n",
       " 'preity': 429,\n",
       " 'feliz': 430,\n",
       " 'chauvinism': 431,\n",
       " 'lattanzi': 432,\n",
       " 'pushes': 433,\n",
       " 'prologue': 434,\n",
       " 'zeenat': 435,\n",
       " 'donnie': 436,\n",
       " 'presidency': 437,\n",
       " 'huckabees': 438,\n",
       " 'kai': 439,\n",
       " 'slinky': 440,\n",
       " 'bodybuilder': 441,\n",
       " 'merry': 442,\n",
       " 'regulations': 443,\n",
       " 'druids': 444,\n",
       " 'tenable': 445,\n",
       " 'throbbing': 446,\n",
       " 'pumped': 447,\n",
       " 'watts': 448,\n",
       " 'contender': 449,\n",
       " 'fells': 450,\n",
       " 'hunting': 451,\n",
       " 'archaeologist': 452,\n",
       " 'selzer': 453,\n",
       " 'biotech': 454,\n",
       " 'noo': 455,\n",
       " 'bejarano': 456,\n",
       " 'parts': 457,\n",
       " 'diamond': 458,\n",
       " 'eguilez': 459,\n",
       " 'skitz': 460,\n",
       " 'booster': 461,\n",
       " 'carvings': 462,\n",
       " 'rowboat': 463,\n",
       " 'ingenue': 464,\n",
       " 'theodor': 465,\n",
       " 'marchand': 466,\n",
       " 'stubbornness': 467,\n",
       " 'awol': 468,\n",
       " 'boggins': 469,\n",
       " 'provocations': 470,\n",
       " 'picturised': 471,\n",
       " 'obscura': 472,\n",
       " 'ugliest': 473,\n",
       " 'cynically': 474,\n",
       " 'northbound': 475,\n",
       " 'documents': 476,\n",
       " 'liaison': 477,\n",
       " 'luchi': 478,\n",
       " 'navigating': 479,\n",
       " 'connoisseur': 480,\n",
       " 'violations': 481,\n",
       " 'shtewart': 482,\n",
       " 'vega': 483,\n",
       " 'marcel': 484,\n",
       " 'starfucker': 485,\n",
       " 'disfiguring': 486,\n",
       " 'thats': 487,\n",
       " 'eh': 488,\n",
       " 'beeping': 489,\n",
       " 'chapeaux': 490,\n",
       " 'plympton': 491,\n",
       " 'enthusiams': 492,\n",
       " 'fredos': 493,\n",
       " 'elways': 494,\n",
       " 'transatlantic': 495,\n",
       " 'moonshiners': 496,\n",
       " 'catharsis': 497,\n",
       " 'neve': 498,\n",
       " 'ozon': 499,\n",
       " 'anyhoo': 500,\n",
       " 'vivaciousness': 501,\n",
       " 'fusion': 502,\n",
       " 'sedately': 503,\n",
       " 'exeggcute': 504,\n",
       " 'miscreant': 505,\n",
       " 'chittering': 506,\n",
       " 'cartooning': 507,\n",
       " 'sobieski': 508,\n",
       " 'chennai': 509,\n",
       " 'pained': 510,\n",
       " 'dearly': 511,\n",
       " 'copter': 512,\n",
       " 'progeny': 513,\n",
       " 'gallop': 514,\n",
       " 'dazzles': 515,\n",
       " 'small': 516,\n",
       " 'ekin': 517,\n",
       " 'locally': 518,\n",
       " 'britian': 519,\n",
       " 'helmets': 520,\n",
       " 'sforza': 521,\n",
       " 'searing': 522,\n",
       " 'comma': 523,\n",
       " 'lifetime': 524,\n",
       " 'enclosing': 525,\n",
       " 'tight': 526,\n",
       " 'independentcritics': 527,\n",
       " 'sped': 528,\n",
       " 'bionic': 529,\n",
       " 'gunbelt': 530,\n",
       " 'mundanely': 531,\n",
       " 'fitzgerald': 532,\n",
       " 'ghatak': 533,\n",
       " 'zwrite': 534,\n",
       " 'berridi': 535,\n",
       " 'slumberness': 536,\n",
       " 'yeller': 537,\n",
       " 'menges': 538,\n",
       " 'catapulting': 539,\n",
       " 'sarro': 540,\n",
       " 'dinasty': 541,\n",
       " 'pincher': 542,\n",
       " 'ruuun': 543,\n",
       " 'escreve': 544,\n",
       " 'tvpg': 545,\n",
       " 'doule': 546,\n",
       " 'ionesco': 547,\n",
       " 'rnb': 548,\n",
       " 'giovinazzo': 549,\n",
       " 'attributions': 550,\n",
       " 'appallingness': 551,\n",
       " 'takei': 552,\n",
       " 'plausibly': 553,\n",
       " 'sharpening': 554,\n",
       " 'deltoro': 555,\n",
       " 'vrajesh': 556,\n",
       " 'marinate': 557,\n",
       " 'eliana': 558,\n",
       " 'willfully': 559,\n",
       " 'everytime': 560,\n",
       " 'tennis': 561,\n",
       " 'bakersfeild': 562,\n",
       " 'shags': 563,\n",
       " 'grumpiest': 564,\n",
       " 'palmira': 565,\n",
       " 'ski': 566,\n",
       " 'venezuelan': 567,\n",
       " 'menahem': 568,\n",
       " 'maximal': 569,\n",
       " 'vishal': 570,\n",
       " 'kleist': 571,\n",
       " 'rail': 572,\n",
       " 'cleaner': 573,\n",
       " 'zenda': 574,\n",
       " 'raskin': 575,\n",
       " 'telegram': 576,\n",
       " 'thesp': 577,\n",
       " 'twas': 578,\n",
       " 'imbecile': 579,\n",
       " 'katzenjammer': 580,\n",
       " 'mckelheer': 581,\n",
       " 'heroine': 582,\n",
       " 'stainboy': 583,\n",
       " 'curitz': 584,\n",
       " 'calvinist': 585,\n",
       " 'zomcon': 586,\n",
       " 'bushie': 587,\n",
       " 'megas': 588,\n",
       " 'kargil': 589,\n",
       " 'whirlwind': 590,\n",
       " 'homily': 591,\n",
       " 'coy': 592,\n",
       " 'welk': 593,\n",
       " 'babybut': 594,\n",
       " 'telling': 595,\n",
       " 'tian': 596,\n",
       " 'risk': 597,\n",
       " 'rigoletto': 598,\n",
       " 'scarsely': 599,\n",
       " 'personage': 600,\n",
       " 'bubba': 601,\n",
       " 'osd': 602,\n",
       " 'rankin': 603,\n",
       " 'outwards': 604,\n",
       " 'albacore': 605,\n",
       " 'itis': 606,\n",
       " 'congregations': 607,\n",
       " 'loudest': 608,\n",
       " 'planting': 609,\n",
       " 'glienna': 610,\n",
       " 'lafont': 611,\n",
       " 'fad': 612,\n",
       " 'maldive': 613,\n",
       " 'torrance': 614,\n",
       " 'bagpipe': 615,\n",
       " 'discomfited': 616,\n",
       " 'preamble': 617,\n",
       " 'thall': 618,\n",
       " 'buffett': 619,\n",
       " 'demure': 620,\n",
       " 'wnk': 621,\n",
       " 'irk': 622,\n",
       " 'waitressing': 623,\n",
       " 'brogado': 624,\n",
       " 'schooler': 625,\n",
       " 'fullness': 626,\n",
       " 'carmela': 627,\n",
       " 'dorday': 628,\n",
       " 'ignacio': 629,\n",
       " 'sangster': 630,\n",
       " 'silenced': 631,\n",
       " 'goodmans': 632,\n",
       " 'member': 633,\n",
       " 'brita': 634,\n",
       " 'asap': 635,\n",
       " 'yehweh': 636,\n",
       " 'straddle': 637,\n",
       " 'true': 638,\n",
       " 'showers': 639,\n",
       " 'laemlee': 640,\n",
       " 'fanbases': 641,\n",
       " 'isenberg': 642,\n",
       " 'stribor': 643,\n",
       " 'we': 644,\n",
       " 'theoden': 645,\n",
       " 'regardless': 646,\n",
       " 'rosencrantz': 647,\n",
       " 'egotism': 648,\n",
       " 'afonya': 649,\n",
       " 'plantations': 650,\n",
       " 'hogtied': 651,\n",
       " 'burying': 652,\n",
       " 'kho': 653,\n",
       " 'apeal': 654,\n",
       " 'maetel': 655,\n",
       " 'meriwether': 656,\n",
       " 'kiera': 657,\n",
       " 'slimeball': 658,\n",
       " 'thrifty': 659,\n",
       " 'companies': 660,\n",
       " 'contaminants': 661,\n",
       " 'section': 662,\n",
       " 'kirkin': 663,\n",
       " 'stepp': 664,\n",
       " 'prakash': 665,\n",
       " 'seiing': 666,\n",
       " 'jan': 667,\n",
       " 'figueroa': 668,\n",
       " 'issue': 669,\n",
       " 'mom': 670,\n",
       " 'baldy': 671,\n",
       " 'coots': 672,\n",
       " 'univeristy': 673,\n",
       " 'streetfighter': 674,\n",
       " 'includesraymond': 675,\n",
       " 'roos': 676,\n",
       " 'ato': 677,\n",
       " 'extracting': 678,\n",
       " 'masterson': 679,\n",
       " 'picturesque': 680,\n",
       " 'mythically': 681,\n",
       " 'bertolucci': 682,\n",
       " 'rafters': 683,\n",
       " 'shambolic': 684,\n",
       " 'ssp': 685,\n",
       " 'jaguar': 686,\n",
       " 'daltrey': 687,\n",
       " 'detaching': 688,\n",
       " 'hodder': 689,\n",
       " 'pokeball': 690,\n",
       " 'paperhouse': 691,\n",
       " 'lens': 692,\n",
       " 'bubby': 693,\n",
       " 'devastates': 694,\n",
       " 'atlantians': 695,\n",
       " 'excution': 696,\n",
       " 'neighbours': 697,\n",
       " 'gottowt': 698,\n",
       " 'lot': 699,\n",
       " 'remission': 700,\n",
       " 'rumination': 701,\n",
       " 'electromagnetic': 702,\n",
       " 'taiwanese': 703,\n",
       " 'subserviant': 704,\n",
       " 'embroidering': 705,\n",
       " 'dionysian': 706,\n",
       " 'spinechilling': 707,\n",
       " 'merton': 708,\n",
       " 'run': 709,\n",
       " 'lycens': 710,\n",
       " 'lamoure': 711,\n",
       " 'dukakas': 712,\n",
       " 'keeler': 713,\n",
       " 'clarinett': 714,\n",
       " 'sooner': 715,\n",
       " 'subverting': 716,\n",
       " 'obscessed': 717,\n",
       " 'minas': 718,\n",
       " 'puszta': 719,\n",
       " 'innaccurate': 720,\n",
       " 'scottsboro': 721,\n",
       " 'honorably': 722,\n",
       " 'illiterates': 723,\n",
       " 'oyama': 724,\n",
       " 'defecated': 725,\n",
       " 'horor': 726,\n",
       " 'puppety': 727,\n",
       " 'setback': 728,\n",
       " 'proper': 729,\n",
       " 'delirious': 730,\n",
       " 'salgado': 731,\n",
       " 'negative': 732,\n",
       " 'chihiro': 733,\n",
       " 'mab': 734,\n",
       " 'offing': 735,\n",
       " 'gladstone': 736,\n",
       " 'stdvd': 737,\n",
       " 'bathhouse': 738,\n",
       " 'welland': 739,\n",
       " 'ayurvedic': 740,\n",
       " 'congested': 741,\n",
       " 'voguing': 742,\n",
       " 'bagatelle': 743,\n",
       " 'latino': 744,\n",
       " 'keusch': 745,\n",
       " 'magnificently': 746,\n",
       " 'instructors': 747,\n",
       " 'amani': 748,\n",
       " 'extricates': 749,\n",
       " 'gage': 750,\n",
       " 'ona': 751,\n",
       " 'islam': 752,\n",
       " 'kji': 753,\n",
       " 'homevideo': 754,\n",
       " 'vadis': 755,\n",
       " 'plods': 756,\n",
       " 'halls': 757,\n",
       " 'terrifyingly': 758,\n",
       " 'gunnarsson': 759,\n",
       " 'cabells': 760,\n",
       " 'edmond': 761,\n",
       " 'tomboy': 762,\n",
       " 'lawsuits': 763,\n",
       " 'knightly': 764,\n",
       " 'rendezvous': 765,\n",
       " 'margins': 766,\n",
       " 'bacri': 767,\n",
       " 'dirtiness': 768,\n",
       " 'toral': 769,\n",
       " 'ideologies': 770,\n",
       " 'gamecube': 771,\n",
       " 'snowhite': 772,\n",
       " 'bribed': 773,\n",
       " 'buxomed': 774,\n",
       " 'hepton': 775,\n",
       " 'akria': 776,\n",
       " 'bonjour': 777,\n",
       " 'mediatic': 778,\n",
       " 'marcellous': 779,\n",
       " 'bib': 780,\n",
       " 'art': 781,\n",
       " 'cheeken': 782,\n",
       " 'polish': 783,\n",
       " 'reuben': 784,\n",
       " 'afterwardsalligator': 785,\n",
       " 'aryian': 786,\n",
       " 'soil': 787,\n",
       " 'barbu': 788,\n",
       " 'trashiness': 789,\n",
       " 'blum': 790,\n",
       " 'alleyway': 791,\n",
       " 'portman': 792,\n",
       " 'expanded': 793,\n",
       " 'purity': 794,\n",
       " 'buttergeit': 795,\n",
       " 'cheapie': 796,\n",
       " 'khushi': 797,\n",
       " 'emmerich': 798,\n",
       " 'letter': 799,\n",
       " 'liquidated': 800,\n",
       " 'fix': 801,\n",
       " 'stepson': 802,\n",
       " 'albaladejo': 803,\n",
       " 'dodgers': 804,\n",
       " 'blindsided': 805,\n",
       " 'prettily': 806,\n",
       " 'barrimore': 807,\n",
       " 'dolby': 808,\n",
       " 'blackhawk': 809,\n",
       " 'sooo': 810,\n",
       " 'sexy': 811,\n",
       " 'cloney': 812,\n",
       " 'totie': 813,\n",
       " 'tanglefoot': 814,\n",
       " 'hella': 815,\n",
       " 'pudney': 816,\n",
       " 'rickman': 817,\n",
       " 'overproduced': 818,\n",
       " 'fetchit': 819,\n",
       " 'conchatta': 820,\n",
       " 'administer': 821,\n",
       " 'bakovic': 822,\n",
       " 'foregoes': 823,\n",
       " 'indoctrination': 824,\n",
       " 'perfection': 825,\n",
       " 'strengthen': 826,\n",
       " 'fallen': 827,\n",
       " 'tulip': 828,\n",
       " 'djakarta': 829,\n",
       " 'troupe': 830,\n",
       " 'notification': 831,\n",
       " 'inoculate': 832,\n",
       " 'possessed': 833,\n",
       " 'willian': 834,\n",
       " 'weimar': 835,\n",
       " 'advised': 836,\n",
       " 'rosentrasse': 837,\n",
       " 'cuddling': 838,\n",
       " 'humane': 839,\n",
       " 'complimenting': 840,\n",
       " 'denuded': 841,\n",
       " 'lifestyles': 842,\n",
       " 'steered': 843,\n",
       " 'welcome': 844,\n",
       " 'raffles': 845,\n",
       " 'shruki': 846,\n",
       " 'drains': 847,\n",
       " 'belive': 848,\n",
       " 'doughnuts': 849,\n",
       " 'reguritated': 850,\n",
       " 'likening': 851,\n",
       " 'harwood': 852,\n",
       " 'lambasted': 853,\n",
       " 'pot': 854,\n",
       " 'shuriikens': 855,\n",
       " 'hmm': 856,\n",
       " 'shys': 857,\n",
       " 'sonic': 858,\n",
       " 'territory': 859,\n",
       " 'book': 860,\n",
       " 'afforded': 861,\n",
       " 'telepathetic': 862,\n",
       " 'gurney': 863,\n",
       " 'seamless': 864,\n",
       " 'crocteasing': 865,\n",
       " 'linoleum': 866,\n",
       " 'gunsmoke': 867,\n",
       " 'opportunistically': 868,\n",
       " 'incorporating': 869,\n",
       " 'grammy': 870,\n",
       " 'konrack': 871,\n",
       " 'ironing': 872,\n",
       " 'salliwan': 873,\n",
       " 'cirus': 874,\n",
       " 'jolson': 875,\n",
       " 'rawked': 876,\n",
       " 'blooming': 877,\n",
       " 'overcharged': 878,\n",
       " 'domestic': 879,\n",
       " 'blends': 880,\n",
       " 'brandoesque': 881,\n",
       " 'botega': 882,\n",
       " 'wolvie': 883,\n",
       " 'hudsucker': 884,\n",
       " 'dambusters': 885,\n",
       " 'telepath': 886,\n",
       " 'viewmaster': 887,\n",
       " 'derringer': 888,\n",
       " 'shingles': 889,\n",
       " 'maid': 890,\n",
       " 'sas': 891,\n",
       " 'commodus': 892,\n",
       " 'annuder': 893,\n",
       " 'bludgeoned': 894,\n",
       " 'walid': 895,\n",
       " 'chopra': 896,\n",
       " 'gurantee': 897,\n",
       " 'humbling': 898,\n",
       " 'rebuked': 899,\n",
       " 'original': 900,\n",
       " 'smorgasbord': 901,\n",
       " 'redd': 902,\n",
       " 'drunkenness': 903,\n",
       " 'avec': 904,\n",
       " 'nekromantiks': 905,\n",
       " 'parallax': 906,\n",
       " 'mildly': 907,\n",
       " 'allyson': 908,\n",
       " 'egbert': 909,\n",
       " 'faulty': 910,\n",
       " 'popeil': 911,\n",
       " 'embroidered': 912,\n",
       " 'booklet': 913,\n",
       " 'pretensious': 914,\n",
       " 'evaporate': 915,\n",
       " 'mag': 916,\n",
       " 'etchings': 917,\n",
       " 'puroo': 918,\n",
       " 'livelier': 919,\n",
       " 'ferdinand': 920,\n",
       " 'emplacement': 921,\n",
       " 'interruption': 922,\n",
       " 'aaghh': 923,\n",
       " 'clinic': 924,\n",
       " 'critiquing': 925,\n",
       " 'bayliss': 926,\n",
       " 'nastasja': 927,\n",
       " 'leffers': 928,\n",
       " 'kibosh': 929,\n",
       " 'walking': 930,\n",
       " 'resident': 931,\n",
       " 'rid': 932,\n",
       " 'exceeding': 933,\n",
       " 'vietnam': 934,\n",
       " 'tuareg': 935,\n",
       " 'budweiser': 936,\n",
       " 'sheritt': 937,\n",
       " 'huze': 938,\n",
       " 'mayne': 939,\n",
       " 'seinfeldish': 940,\n",
       " 'slots': 941,\n",
       " 'heaven': 942,\n",
       " 'mirror': 943,\n",
       " 'jurassik': 944,\n",
       " 'nonchalant': 945,\n",
       " 'champions': 946,\n",
       " 'farce': 947,\n",
       " 'hedeen': 948,\n",
       " 'bandwagon': 949,\n",
       " 'typecast': 950,\n",
       " 'mattress': 951,\n",
       " 'animaux': 952,\n",
       " 'westmore': 953,\n",
       " 'arguing': 954,\n",
       " 'gismonte': 955,\n",
       " 'phyillis': 956,\n",
       " 'uzi': 957,\n",
       " 'stance': 958,\n",
       " 'amok': 959,\n",
       " 'mothering': 960,\n",
       " 'lalouche': 961,\n",
       " 'hershell': 962,\n",
       " 'gft': 963,\n",
       " 'coordinates': 964,\n",
       " 'reimann': 965,\n",
       " 'boro': 966,\n",
       " 'reverberate': 967,\n",
       " 'thimig': 968,\n",
       " 'conaway': 969,\n",
       " 'deherrera': 970,\n",
       " 'baokar': 971,\n",
       " 'begin': 972,\n",
       " 'swordsmanship': 973,\n",
       " 'actresses': 974,\n",
       " 'renaming': 975,\n",
       " 'amitji': 976,\n",
       " 'rollers': 977,\n",
       " 'broader': 978,\n",
       " 'buzaglo': 979,\n",
       " 'coincidence': 980,\n",
       " 'lickerish': 981,\n",
       " 'goundamani': 982,\n",
       " 'rataud': 983,\n",
       " 'sharkbait': 984,\n",
       " 'poster': 985,\n",
       " 'dicing': 986,\n",
       " 'stripping': 987,\n",
       " 'profundity': 988,\n",
       " 'timing': 989,\n",
       " 'invader': 990,\n",
       " 'belly': 991,\n",
       " 'knackers': 992,\n",
       " 'utterings': 993,\n",
       " 'overcoats': 994,\n",
       " 'monarchs': 995,\n",
       " 'wantabedde': 996,\n",
       " 'infuse': 997,\n",
       " 'accounted': 998,\n",
       " 'graves': 999,\n",
       " ...}"
      ]
     },
     "execution_count": 31,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# Create a dictionary of words in the vocabulary mapped to index positions\n",
    "# (to be used in layer_0)\n",
    "word2index = {}\n",
    "for i,word in enumerate(vocab):\n",
    "    word2index[word] = i\n",
    "    \n",
    "# display the map of words to indices\n",
    "word2index"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "**TODO:**  Complete the implementation of `update_input_layer`. It should count \n",
    "          how many times each word is used in the given review, and then store\n",
    "          those counts at the appropriate indices inside `layer_0`."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 32,
   "metadata": {},
   "outputs": [],
   "source": [
    "def update_input_layer(review):\n",
    "    \"\"\" Modify the global layer_0 to represent the vector form of review.\n",
    "    The element at a given index of layer_0 should represent\n",
    "    how many times the given word occurs in the review.\n",
    "    Args:\n",
    "        review(string) - the string of the review\n",
    "    Returns:\n",
    "        None\n",
    "    \"\"\"\n",
    "    global layer_0\n",
    "    # clear out previous state by resetting the layer to be all 0s\n",
    "    layer_0 *= 0\n",
    "    \n",
    "    # TODO: count how many times each word is used in the given review and store the results in layer_0\n",
    "    for i in review.split(\" \"):\n",
    "        layer_0[0][word2index[word]] += 1"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Run the following cell to test updating the input layer with the first review. The indices assigned may not be the same as in the solution, but hopefully you'll see some non-zero values in `layer_0`.  "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 33,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([[  0.,   0.,   0., ...,   0.,   0., 185.]])"
      ]
     },
     "execution_count": 33,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "update_input_layer(reviews[0])\n",
    "layer_0"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "**TODO:** Complete the implementation of `get_target_for_labels`. It should return `0` or `1`, \n",
    "          depending on whether the given label is `NEGATIVE` or `POSITIVE`, respectively."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 34,
   "metadata": {},
   "outputs": [],
   "source": [
    "def get_target_for_label(label):\n",
    "    \"\"\"Convert a label to `0` or `1`.\n",
    "    Args:\n",
    "        label(string) - Either \"POSITIVE\" or \"NEGATIVE\".\n",
    "    Returns:\n",
    "        `0` or `1`.\n",
    "    \"\"\"\n",
    "    # TODO: Your code here\n",
    "    if(label == 'POSITIVE'):\n",
    "        return 1\n",
    "    else:\n",
    "        return 0"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Run the following two cells. They should print out`'POSITIVE'` and `1`, respectively."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 35,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "'POSITIVE'"
      ]
     },
     "execution_count": 35,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "labels[0]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 36,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "1"
      ]
     },
     "execution_count": 36,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "get_target_for_label(labels[0])"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Run the following two cells. They should print out `'NEGATIVE'` and `0`, respectively."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 37,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "'NEGATIVE'"
      ]
     },
     "execution_count": 37,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "labels[1]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 38,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0"
      ]
     },
     "execution_count": 38,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "get_target_for_label(labels[1])"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# End of Project 2. \n",
    "## Watch the next video to see Andrew's solution, then continue on to the next lesson."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Project 3: Building a Neural Network<a id='project_3'></a>"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "**TODO:** We've included the framework of a class called `SentimentNetork`. Implement all of the items marked `TODO` in the code. These include doing the following:\n",
    "- Create a basic neural network much like the networks you've seen in earlier lessons and in Project 1, with an input layer, a hidden layer, and an output layer. \n",
    "- Do **not** add a non-linearity in the hidden layer. That is, do not use an activation function when calculating the hidden layer outputs.\n",
    "- Re-use the code from earlier in this notebook to create the training data (see `TODO`s in the code)\n",
    "- Implement the `pre_process_data` function to create the vocabulary for our training data generating functions\n",
    "- Ensure `train` trains over the entire corpus"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Where to Get Help if You Need it\n",
    "- Re-watch earlier Udacity lectures\n",
    "- Chapters 3-5 - [Grokking Deep Learning](https://www.manning.com/books/grokking-deep-learning) - (Check inside your classroom for a discount code)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 39,
   "metadata": {},
   "outputs": [],
   "source": [
    "import time\n",
    "import sys\n",
    "import numpy as np\n",
    "\n",
    "# Encapsulate our neural network in a class\n",
    "class SentimentNetwork:\n",
    "    def __init__(self, reviews, labels, hidden_nodes = 10, learning_rate = 0.1):\n",
    "        \"\"\"Create a SentimenNetwork with the given settings\n",
    "        Args:\n",
    "            reviews(list) - List of reviews used for training\n",
    "            labels(list) - List of POSITIVE/NEGATIVE labels associated with the given reviews\n",
    "            hidden_nodes(int) - Number of nodes to create in the hidden layer\n",
    "            learning_rate(float) - Learning rate to use while training\n",
    "        \n",
    "        \"\"\"\n",
    "        # Assign a seed to our random number generator to ensure we get\n",
    "        # reproducable results during development \n",
    "        np.random.seed(1)\n",
    "\n",
    "        # process the reviews and their associated labels so that everything\n",
    "        # is ready for training\n",
    "        self.pre_process_data(reviews, labels)\n",
    "        \n",
    "        # Build the network to have the number of hidden nodes and the learning rate that\n",
    "        # were passed into this initializer. Make the same number of input nodes as\n",
    "        # there are vocabulary words and create a single output node.\n",
    "        self.init_network(len(self.review_vocab),hidden_nodes, 1, learning_rate)\n",
    "\n",
    "    def pre_process_data(self, reviews, labels):\n",
    "        \n",
    "        review_vocab = set()\n",
    "        # TODO: populate review_vocab with all of the words in the given reviews\n",
    "        #       Remember to split reviews into individual words \n",
    "        #       using \"split(' ')\" instead of \"split()\".\n",
    "        for review in reviews:\n",
    "            for word in review.split(\" \"):\n",
    "                review_vocab.add(word)\n",
    "        # Convert the vocabulary set to a list so we can access words via indices\n",
    "        self.review_vocab = list(review_vocab)\n",
    "        \n",
    "        label_vocab = set()\n",
    "        # TODO: populate label_vocab with all of the words in the given labels.\n",
    "        #       There is no need to split the labels because each one is a single word.\n",
    "        for label in labels:\n",
    "            label_vocab.add(label)\n",
    "        \n",
    "        # Convert the label vocabulary set to a list so we can access labels via indices\n",
    "        self.label_vocab = list(label_vocab)\n",
    "        \n",
    "        # Store the sizes of the review and label vocabularies.\n",
    "        self.review_vocab_size = len(self.review_vocab)\n",
    "        self.label_vocab_size = len(self.label_vocab)\n",
    "        \n",
    "        # Create a dictionary of words in the vocabulary mapped to index positions\n",
    "        self.word2index = {}\n",
    "        # TODO: populate self.word2index with indices for all the words in self.review_vocab\n",
    "        #       like you saw earlier in the notebook\n",
    "        for i, word in enumerate(self.review_vocab):\n",
    "            self.word2index[word] = i\n",
    "        \n",
    "        # Create a dictionary of labels mapped to index positions\n",
    "        self.label2index = {}\n",
    "        # TODO: do the same thing you did for self.word2index and self.review_vocab, \n",
    "        #       but for self.label2index and self.label_vocab instead\n",
    "        for i, label in enumerate(self.label_vocab):\n",
    "            self.label2index[label] = i \n",
    "        \n",
    "    def init_network(self, input_nodes, hidden_nodes, output_nodes, learning_rate):\n",
    "        # Store the number of nodes in input, hidden, and output layers.\n",
    "        self.input_nodes = input_nodes\n",
    "        self.hidden_nodes = hidden_nodes\n",
    "        self.output_nodes = output_nodes\n",
    "\n",
    "        # Store the learning rate\n",
    "        self.learning_rate = learning_rate\n",
    "\n",
    "        # Initialize weights\n",
    "        \n",
    "        # TODO: initialize self.weights_0_1 as a matrix of zeros. These are the weights between\n",
    "        #       the input layer and the hidden layer.\n",
    "        self.weights_0_1 = np.zeros((self.input_nodes,self.hidden_nodes))\n",
    "        \n",
    "        # TODO: initialize self.weights_1_2 as a matrix of random values. \n",
    "        #       These are the weights between the hidden layer and the output layer.\n",
    "        self.weights_1_2 = np.random.normal(0.0, self.output_nodes**-0.5, \n",
    "                                                (self.hidden_nodes, self.output_nodes))\n",
    "        \n",
    "        # TODO: Create the input layer, a two-dimensional matrix with shape \n",
    "        #       1 x input_nodes, with all values initialized to zero\n",
    "        self.layer_0 = np.zeros((1,input_nodes))\n",
    "    \n",
    "        \n",
    "    def update_input_layer(self,review):\n",
    "        # TODO: You can copy most of the code you wrote for update_input_layer \n",
    "        #       earlier in this notebook. \n",
    "        #\n",
    "        #       However, MAKE SURE YOU CHANGE ALL VARIABLES TO REFERENCE\n",
    "        #       THE VERSIONS STORED IN THIS OBJECT, NOT THE GLOBAL OBJECTS.\n",
    "        #       For example, replace \"layer_0 *= 0\" with \"self.layer_0 *= 0\"\n",
    "        self.layer_0 *= 0\n",
    "        \n",
    "        for word in review.split(\" \"):\n",
    "            if(word in self.word2index.keys()):\n",
    "                self.layer_0[0][self.word2index[word]] += 1\n",
    "                \n",
    "    def get_target_for_label(self,label):\n",
    "        # TODO: Copy the code you wrote for get_target_for_label \n",
    "        #       earlier in this notebook. \n",
    "        if(label == 'POSITIVE'):\n",
    "            return 1\n",
    "        else:\n",
    "            return 0\n",
    "        \n",
    "    def sigmoid(self,x):\n",
    "        # TODO: Return the result of calculating the sigmoid activation function\n",
    "        #       shown in the lectures\n",
    "        return 1 / (1 + np.exp(-x))\n",
    "    \n",
    "    def sigmoid_output_2_derivative(self,output):\n",
    "        # TODO: Return the derivative of the sigmoid activation function, \n",
    "        #       where \"output\" is the original output from the sigmoid fucntion \n",
    "        return output * (1 - output)\n",
    "\n",
    "    def train(self, training_reviews, training_labels):\n",
    "        \n",
    "        # make sure out we have a matching number of reviews and labels\n",
    "        assert(len(training_reviews) == len(training_labels))\n",
    "        \n",
    "        # Keep track of correct predictions to display accuracy during training \n",
    "        correct_so_far = 0\n",
    "        \n",
    "        # Remember when we started for printing time statistics\n",
    "        start = time.time()\n",
    "\n",
    "        # loop through all the given reviews and run a forward and backward pass,\n",
    "        # updating weights for every item\n",
    "        for i in range(len(training_reviews)):\n",
    "            \n",
    "            # TODO: Get the next review and its correct label\n",
    "            review = training_reviews[i]\n",
    "            label = training_labels[i]\n",
    "            # TODO: Implement the forward pass through the network. \n",
    "            #       That means use the given review to update the input layer, \n",
    "            #       then calculate values for the hidden layer,\n",
    "            #       and finally calculate the output layer.\n",
    "            # \n",
    "            #       Do not use an activation function for the hidden layer,\n",
    "            #       but use the sigmoid activation function for the output layer.\n",
    "            self.update_input_layer(review)\n",
    "            layer_1 = self.layer_0.dot(self.weights_0_1)\n",
    "            layer_2 = self.sigmoid(layer_1.dot(self.weights_1_2))\n",
    "            # TODO: Implement the back propagation pass here. \n",
    "            #       That means calculate the error for the forward pass's prediction\n",
    "            #       and update the weights in the network according to their\n",
    "            #       contributions toward the error, as calculated via the\n",
    "            #       gradient descent and back propagation algorithms you \n",
    "            #       learned in class.\n",
    "            layer_2_error = layer_2 - self.get_target_for_label(label) # Output layer error is the difference between desired target and actual output.\n",
    "            layer_2_delta = layer_2_error * self.sigmoid_output_2_derivative(layer_2)\n",
    "\n",
    "            layer_1_error = layer_2_delta.dot(self.weights_1_2.T) \n",
    "            layer_1_delta = layer_1_error \n",
    "\n",
    "\n",
    "            self.weights_1_2 -= layer_1.T.dot(layer_2_delta) * self.learning_rate \n",
    "            self.weights_0_1 -= self.layer_0.T.dot(layer_1_delta) * self.learning_rate \n",
    "\n",
    "            # TODO: Keep track of correct predictions. To determine if the prediction was\n",
    "            #       correct, check that the absolute value of the output error \n",
    "            #       is less than 0.5. If so, add one to the correct_so_far count.\n",
    "            if(layer_2 >= 0.5 and label == 'POSITIVE'):\n",
    "                correct_so_far += 1\n",
    "            elif(layer_2 < 0.5 and label == 'NEGATIVE'):\n",
    "                correct_so_far += 1\n",
    "            # For debug purposes, print out our prediction accuracy and speed \n",
    "            # throughout the training process. \n",
    "\n",
    "            elapsed_time = float(time.time() - start)\n",
    "            reviews_per_second = i / elapsed_time if elapsed_time > 0 else 0\n",
    "            \n",
    "            sys.stdout.write(\"\\rProgress:\" + str(100 * i/float(len(training_reviews)))[:4] \\\n",
    "                             + \"% Speed(reviews/sec):\" + str(reviews_per_second)[0:5] \\\n",
    "                             + \" #Correct:\" + str(correct_so_far) + \" #Trained:\" + str(i+1) \\\n",
    "                             + \" Training Accuracy:\" + str(correct_so_far * 100 / float(i+1))[:4] + \"%\")\n",
    "            if(i % 2500 == 0):\n",
    "                print(\"\")\n",
    "    \n",
    "    def test(self, testing_reviews, testing_labels):\n",
    "        \"\"\"\n",
    "        Attempts to predict the labels for the given testing_reviews,\n",
    "        and uses the test_labels to calculate the accuracy of those predictions.\n",
    "        \"\"\"\n",
    "        \n",
    "        # keep track of how many correct predictions we make\n",
    "        correct = 0\n",
    "\n",
    "        # we'll time how many predictions per second we make\n",
    "        start = time.time()\n",
    "\n",
    "        # Loop through each of the given reviews and call run to predict\n",
    "        # its label. \n",
    "        for i in range(len(testing_reviews)):\n",
    "            pred = self.run(testing_reviews[i])\n",
    "            if(pred == testing_labels[i]):\n",
    "                correct += 1\n",
    "            \n",
    "            # For debug purposes, print out our prediction accuracy and speed \n",
    "            # throughout the prediction process. \n",
    "\n",
    "            elapsed_time = float(time.time() - start)\n",
    "            reviews_per_second = i / elapsed_time if elapsed_time > 0 else 0\n",
    "            \n",
    "            sys.stdout.write(\"\\rProgress:\" + str(100 * i/float(len(testing_reviews)))[:4] \\\n",
    "                             + \"% Speed(reviews/sec):\" + str(reviews_per_second)[0:5] \\\n",
    "                             + \" #Correct:\" + str(correct) + \" #Tested:\" + str(i+1) \\\n",
    "                             + \" Testing Accuracy:\" + str(correct * 100 / float(i+1))[:4] + \"%\")\n",
    "    \n",
    "    def run(self, review):\n",
    "        \"\"\"\n",
    "        Returns a POSITIVE or NEGATIVE prediction for the given review.\n",
    "        \"\"\"\n",
    "        # TODO: Run a forward pass through the network, like you did in the\n",
    "        #       \"train\" function. That means use the given review to \n",
    "        #       update the input layer, then calculate values for the hidden layer,\n",
    "        #       and finally calculate the output layer.\n",
    "        #\n",
    "        #       Note: The review passed into this function for prediction \n",
    "        #             might come from anywhere, so you should convert it \n",
    "        #             to lower case prior to using it.\n",
    "        self.update_input_layer(review.lower())\n",
    "\n",
    "        # Hidden layer\n",
    "        layer_1 = self.layer_0.dot(self.weights_0_1)\n",
    "\n",
    "        # Output layer\n",
    "        layer_2 = self.sigmoid(layer_1.dot(self.weights_1_2))\n",
    "        # TODO: The output layer should now contain a prediction. \n",
    "        #       Return `POSITIVE` for predictions greater-than-or-equal-to `0.5`, \n",
    "        #       and `NEGATIVE` otherwise.\n",
    "        if layer_2[0] >= 0.5:\n",
    "            return 'POSITIVE'\n",
    "        else:\n",
    "            return 'NEGATIVE'\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Run the following cell to create a `SentimentNetwork` that will train on all but the last 1000 reviews (we're saving those for testing). Here we use a learning rate of `0.1`."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 40,
   "metadata": {},
   "outputs": [],
   "source": [
    "mlp = SentimentNetwork(reviews[:-1000],labels[:-1000], learning_rate=0.1)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Run the following cell to test the network's performance against the last 1000 reviews (the ones we held out from our training set). \n",
    "\n",
    "**We have not trained the model yet, so the results should be about 50% as it will just be guessing and there are only two possible values to choose from.**"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 41,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Progress:99.9% Speed(reviews/sec):956.5 #Correct:500 #Tested:1000 Testing Accuracy:50.0%"
     ]
    }
   ],
   "source": [
    "mlp.test(reviews[-1000:],labels[-1000:])"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Run the following cell to actually train the network. During training, it will display the model's accuracy repeatedly as it trains so you can see how well it's doing."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 42,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Progress:0.0% Speed(reviews/sec):0.0 #Correct:1 #Trained:1 Training Accuracy:100.%\n",
      "Progress:10.4% Speed(reviews/sec):381.6 #Correct:1251 #Trained:2501 Training Accuracy:50.0%\n",
      "Progress:20.8% Speed(reviews/sec):387.8 #Correct:2501 #Trained:5001 Training Accuracy:50.0%\n",
      "Progress:31.2% Speed(reviews/sec):390.7 #Correct:3751 #Trained:7501 Training Accuracy:50.0%\n",
      "Progress:41.6% Speed(reviews/sec):391.7 #Correct:5001 #Trained:10001 Training Accuracy:50.0%\n",
      "Progress:52.0% Speed(reviews/sec):388.0 #Correct:6251 #Trained:12501 Training Accuracy:50.0%\n",
      "Progress:62.5% Speed(reviews/sec):387.7 #Correct:7501 #Trained:15001 Training Accuracy:50.0%\n",
      "Progress:72.9% Speed(reviews/sec):385.4 #Correct:8751 #Trained:17501 Training Accuracy:50.0%\n",
      "Progress:83.3% Speed(reviews/sec):384.7 #Correct:10001 #Trained:20001 Training Accuracy:50.0%\n",
      "Progress:93.7% Speed(reviews/sec):385.4 #Correct:11251 #Trained:22501 Training Accuracy:50.0%\n",
      "Progress:99.9% Speed(reviews/sec):385.5 #Correct:12000 #Trained:24000 Training Accuracy:50.0%"
     ]
    }
   ],
   "source": [
    "mlp.train(reviews[:-1000],labels[:-1000])"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "That most likely didn't train very well. Part of the reason may be because the learning rate is too high. Run the following cell to recreate the network with a smaller learning rate, `0.01`, and then train the new network."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "mlp = SentimentNetwork(reviews[:-1000],labels[:-1000], learning_rate=0.01)\n",
    "mlp.train(reviews[:-1000],labels[:-1000])"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "That probably wasn't much different. Run the following cell to recreate the network one more time with an even smaller learning rate, `0.001`, and then train the new network."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 43,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Progress:0.0% Speed(reviews/sec):0.0 #Correct:1 #Trained:1 Training Accuracy:100.%\n",
      "Progress:10.4% Speed(reviews/sec):382.5 #Correct:1254 #Trained:2501 Training Accuracy:50.1%\n",
      "Progress:20.8% Speed(reviews/sec):383.0 #Correct:2612 #Trained:5001 Training Accuracy:52.2%\n",
      "Progress:31.2% Speed(reviews/sec):382.7 #Correct:4025 #Trained:7501 Training Accuracy:53.6%\n",
      "Progress:41.6% Speed(reviews/sec):383.3 #Correct:5554 #Trained:10001 Training Accuracy:55.5%\n",
      "Progress:52.0% Speed(reviews/sec):383.0 #Correct:7086 #Trained:12501 Training Accuracy:56.6%\n",
      "Progress:62.5% Speed(reviews/sec):383.1 #Correct:8709 #Trained:15001 Training Accuracy:58.0%\n",
      "Progress:72.9% Speed(reviews/sec):383.2 #Correct:10281 #Trained:17501 Training Accuracy:58.7%\n",
      "Progress:83.3% Speed(reviews/sec):381.0 #Correct:11920 #Trained:20001 Training Accuracy:59.5%\n",
      "Progress:93.7% Speed(reviews/sec):376.3 #Correct:13598 #Trained:22501 Training Accuracy:60.4%\n",
      "Progress:99.9% Speed(reviews/sec):375.2 #Correct:14653 #Trained:24000 Training Accuracy:61.0%"
     ]
    }
   ],
   "source": [
    "mlp = SentimentNetwork(reviews[:-1000],labels[:-1000], learning_rate=0.001)\n",
    "mlp.train(reviews[:-1000],labels[:-1000])"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "With a learning rate of `0.001`, the network should finall have started to improve during training. It's still not very good, but it shows that this solution has potential. We will improve it in the next lesson."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# End of Project 3. \n",
    "## Watch the next video to see Andrew's solution, then continue on to the next lesson."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Understanding Neural Noise<a id='lesson_4'></a>\n",
    "\n",
    "The following cells include includes the code Andrew shows in the next video. We've included it here so you can run the cells along with the video without having to type in everything."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "from IPython.display import Image\n",
    "Image(filename='sentiment_network.png')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "def update_input_layer(review):\n",
    "    \n",
    "    global layer_0\n",
    "    \n",
    "    # clear out previous state, reset the layer to be all 0s\n",
    "    layer_0 *= 0\n",
    "    for word in review.split(\" \"):\n",
    "        layer_0[0][word2index[word]] += 1\n",
    "\n",
    "update_input_layer(reviews[0])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "layer_0"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "review_counter = Counter()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "for word in reviews[0].split(\" \"):\n",
    "    review_counter[word] += 1"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "review_counter.most_common()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Project 4: Reducing Noise in Our Input Data<a id='project_4'></a>\n",
    "\n",
    "**TODO:** Attempt to reduce the noise in the input data like Andrew did in the previous video. Specifically, do the following:\n",
    "* Copy the `SentimentNetwork` class you created earlier into the following cell.\n",
    "* Modify `update_input_layer` so it does not count how many times each word is used, but rather just stores whether or not a word was used. "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 44,
   "metadata": {},
   "outputs": [],
   "source": [
    "# TODO: -Copy the SentimentNetwork class from Projet 3 lesson\n",
    "#       -Modify it to reduce noise, like in the video\n",
    "import time\n",
    "import sys\n",
    "import numpy as np\n",
    "\n",
    "# Encapsulate our neural network in a class\n",
    "class SentimentNetwork:\n",
    "    def __init__(self, reviews, labels, hidden_nodes = 10, learning_rate = 0.1):\n",
    "        \"\"\"Create a SentimenNetwork with the given settings\n",
    "        Args:\n",
    "            reviews(list) - List of reviews used for training\n",
    "            labels(list) - List of POSITIVE/NEGATIVE labels associated with the given reviews\n",
    "            hidden_nodes(int) - Number of nodes to create in the hidden layer\n",
    "            learning_rate(float) - Learning rate to use while training\n",
    "        \n",
    "        \"\"\"\n",
    "        # Assign a seed to our random number generator to ensure we get\n",
    "        # reproducable results during development \n",
    "        np.random.seed(1)\n",
    "\n",
    "        # process the reviews and their associated labels so that everything\n",
    "        # is ready for training\n",
    "        self.pre_process_data(reviews, labels)\n",
    "        \n",
    "        # Build the network to have the number of hidden nodes and the learning rate that\n",
    "        # were passed into this initializer. Make the same number of input nodes as\n",
    "        # there are vocabulary words and create a single output node.\n",
    "        self.init_network(len(self.review_vocab),hidden_nodes, 1, learning_rate)\n",
    "\n",
    "    def pre_process_data(self, reviews, labels):\n",
    "        \n",
    "        review_vocab = set()\n",
    "        # TODO: populate review_vocab with all of the words in the given reviews\n",
    "        #       Remember to split reviews into individual words \n",
    "        #       using \"split(' ')\" instead of \"split()\".\n",
    "        for review in reviews:\n",
    "            for word in review.split(\" \"):\n",
    "                review_vocab.add(word)\n",
    "        # Convert the vocabulary set to a list so we can access words via indices\n",
    "        self.review_vocab = list(review_vocab)\n",
    "        \n",
    "        label_vocab = set()\n",
    "        # TODO: populate label_vocab with all of the words in the given labels.\n",
    "        #       There is no need to split the labels because each one is a single word.\n",
    "        for label in labels:\n",
    "            label_vocab.add(label)\n",
    "        \n",
    "        # Convert the label vocabulary set to a list so we can access labels via indices\n",
    "        self.label_vocab = list(label_vocab)\n",
    "        \n",
    "        # Store the sizes of the review and label vocabularies.\n",
    "        self.review_vocab_size = len(self.review_vocab)\n",
    "        self.label_vocab_size = len(self.label_vocab)\n",
    "        \n",
    "        # Create a dictionary of words in the vocabulary mapped to index positions\n",
    "        self.word2index = {}\n",
    "        # TODO: populate self.word2index with indices for all the words in self.review_vocab\n",
    "        #       like you saw earlier in the notebook\n",
    "        for i, word in enumerate(self.review_vocab):\n",
    "            self.word2index[word] = i\n",
    "        \n",
    "        # Create a dictionary of labels mapped to index positions\n",
    "        self.label2index = {}\n",
    "        # TODO: do the same thing you did for self.word2index and self.review_vocab, \n",
    "        #       but for self.label2index and self.label_vocab instead\n",
    "        for i, label in enumerate(self.label_vocab):\n",
    "            self.label2index[label] = i \n",
    "        \n",
    "    def init_network(self, input_nodes, hidden_nodes, output_nodes, learning_rate):\n",
    "        # Store the number of nodes in input, hidden, and output layers.\n",
    "        self.input_nodes = input_nodes\n",
    "        self.hidden_nodes = hidden_nodes\n",
    "        self.output_nodes = output_nodes\n",
    "\n",
    "        # Store the learning rate\n",
    "        self.learning_rate = learning_rate\n",
    "\n",
    "        # Initialize weights\n",
    "        \n",
    "        # TODO: initialize self.weights_0_1 as a matrix of zeros. These are the weights between\n",
    "        #       the input layer and the hidden layer.\n",
    "        self.weights_0_1 = np.zeros((self.input_nodes,self.hidden_nodes))\n",
    "        \n",
    "        # TODO: initialize self.weights_1_2 as a matrix of random values. \n",
    "        #       These are the weights between the hidden layer and the output layer.\n",
    "        self.weights_1_2 = np.random.normal(0.0, self.output_nodes**-0.5, \n",
    "                                                (self.hidden_nodes, self.output_nodes))\n",
    "        \n",
    "        # TODO: Create the input layer, a two-dimensional matrix with shape \n",
    "        #       1 x input_nodes, with all values initialized to zero\n",
    "        self.layer_0 = np.zeros((1,input_nodes))\n",
    "    \n",
    "        \n",
    "    def update_input_layer(self,review):\n",
    "        # TODO: You can copy most of the code you wrote for update_input_layer \n",
    "        #       earlier in this notebook. \n",
    "        #\n",
    "        #       However, MAKE SURE YOU CHANGE ALL VARIABLES TO REFERENCE\n",
    "        #       THE VERSIONS STORED IN THIS OBJECT, NOT THE GLOBAL OBJECTS.\n",
    "        #       For example, replace \"layer_0 *= 0\" with \"self.layer_0 *= 0\"\n",
    "        self.layer_0 *= 0\n",
    "        \n",
    "        for word in review.split(\" \"):\n",
    "            if(word in self.word2index.keys()):\n",
    "                self.layer_0[0][self.word2index[word]] = 1\n",
    "                \n",
    "    def get_target_for_label(self,label):\n",
    "        # TODO: Copy the code you wrote for get_target_for_label \n",
    "        #       earlier in this notebook. \n",
    "        if(label == 'POSITIVE'):\n",
    "            return 1\n",
    "        else:\n",
    "            return 0\n",
    "        \n",
    "    def sigmoid(self,x):\n",
    "        # TODO: Return the result of calculating the sigmoid activation function\n",
    "        #       shown in the lectures\n",
    "        return 1 / (1 + np.exp(-x))\n",
    "    \n",
    "    def sigmoid_output_2_derivative(self,output):\n",
    "        # TODO: Return the derivative of the sigmoid activation function, \n",
    "        #       where \"output\" is the original output from the sigmoid fucntion \n",
    "        return output * (1 - output)\n",
    "\n",
    "    def train(self, training_reviews, training_labels):\n",
    "        \n",
    "        # make sure out we have a matching number of reviews and labels\n",
    "        assert(len(training_reviews) == len(training_labels))\n",
    "        \n",
    "        # Keep track of correct predictions to display accuracy during training \n",
    "        correct_so_far = 0\n",
    "        \n",
    "        # Remember when we started for printing time statistics\n",
    "        start = time.time()\n",
    "\n",
    "        # loop through all the given reviews and run a forward and backward pass,\n",
    "        # updating weights for every item\n",
    "        for i in range(len(training_reviews)):\n",
    "            \n",
    "            # TODO: Get the next review and its correct label\n",
    "            review = training_reviews[i]\n",
    "            label = training_labels[i]\n",
    "            # TODO: Implement the forward pass through the network. \n",
    "            #       That means use the given review to update the input layer, \n",
    "            #       then calculate values for the hidden layer,\n",
    "            #       and finally calculate the output layer.\n",
    "            # \n",
    "            #       Do not use an activation function for the hidden layer,\n",
    "            #       but use the sigmoid activation function for the output layer.\n",
    "            self.update_input_layer(review)\n",
    "            layer_1 = self.layer_0.dot(self.weights_0_1)\n",
    "            layer_2 = self.sigmoid(layer_1.dot(self.weights_1_2))\n",
    "            # TODO: Implement the back propagation pass here. \n",
    "            #       That means calculate the error for the forward pass's prediction\n",
    "            #       and update the weights in the network according to their\n",
    "            #       contributions toward the error, as calculated via the\n",
    "            #       gradient descent and back propagation algorithms you \n",
    "            #       learned in class.\n",
    "            layer_2_error = layer_2 - self.get_target_for_label(label) # Output layer error is the difference between desired target and actual output.\n",
    "            layer_2_delta = layer_2_error * self.sigmoid_output_2_derivative(layer_2)\n",
    "\n",
    "            layer_1_error = layer_2_delta.dot(self.weights_1_2.T) \n",
    "            layer_1_delta = layer_1_error \n",
    "\n",
    "\n",
    "            self.weights_1_2 -= layer_1.T.dot(layer_2_delta) * self.learning_rate \n",
    "            self.weights_0_1 -= self.layer_0.T.dot(layer_1_delta) * self.learning_rate \n",
    "\n",
    "            # TODO: Keep track of correct predictions. To determine if the prediction was\n",
    "            #       correct, check that the absolute value of the output error \n",
    "            #       is less than 0.5. If so, add one to the correct_so_far count.\n",
    "            if(layer_2 >= 0.5 and label == 'POSITIVE'):\n",
    "                correct_so_far += 1\n",
    "            elif(layer_2 < 0.5 and label == 'NEGATIVE'):\n",
    "                correct_so_far += 1\n",
    "            # For debug purposes, print out our prediction accuracy and speed \n",
    "            # throughout the training process. \n",
    "\n",
    "            elapsed_time = float(time.time() - start)\n",
    "            reviews_per_second = i / elapsed_time if elapsed_time > 0 else 0\n",
    "            \n",
    "            sys.stdout.write(\"\\rProgress:\" + str(100 * i/float(len(training_reviews)))[:4] \\\n",
    "                             + \"% Speed(reviews/sec):\" + str(reviews_per_second)[0:5] \\\n",
    "                             + \" #Correct:\" + str(correct_so_far) + \" #Trained:\" + str(i+1) \\\n",
    "                             + \" Training Accuracy:\" + str(correct_so_far * 100 / float(i+1))[:4] + \"%\")\n",
    "            if(i % 2500 == 0):\n",
    "                print(\"\")\n",
    "    \n",
    "    def test(self, testing_reviews, testing_labels):\n",
    "        \"\"\"\n",
    "        Attempts to predict the labels for the given testing_reviews,\n",
    "        and uses the test_labels to calculate the accuracy of those predictions.\n",
    "        \"\"\"\n",
    "        \n",
    "        # keep track of how many correct predictions we make\n",
    "        correct = 0\n",
    "\n",
    "        # we'll time how many predictions per second we make\n",
    "        start = time.time()\n",
    "\n",
    "        # Loop through each of the given reviews and call run to predict\n",
    "        # its label. \n",
    "        for i in range(len(testing_reviews)):\n",
    "            pred = self.run(testing_reviews[i])\n",
    "            if(pred == testing_labels[i]):\n",
    "                correct += 1\n",
    "            \n",
    "            # For debug purposes, print out our prediction accuracy and speed \n",
    "            # throughout the prediction process. \n",
    "\n",
    "            elapsed_time = float(time.time() - start)\n",
    "            reviews_per_second = i / elapsed_time if elapsed_time > 0 else 0\n",
    "            \n",
    "            sys.stdout.write(\"\\rProgress:\" + str(100 * i/float(len(testing_reviews)))[:4] \\\n",
    "                             + \"% Speed(reviews/sec):\" + str(reviews_per_second)[0:5] \\\n",
    "                             + \" #Correct:\" + str(correct) + \" #Tested:\" + str(i+1) \\\n",
    "                             + \" Testing Accuracy:\" + str(correct * 100 / float(i+1))[:4] + \"%\")\n",
    "    \n",
    "    def run(self, review):\n",
    "        \"\"\"\n",
    "        Returns a POSITIVE or NEGATIVE prediction for the given review.\n",
    "        \"\"\"\n",
    "        # TODO: Run a forward pass through the network, like you did in the\n",
    "        #       \"train\" function. That means use the given review to \n",
    "        #       update the input layer, then calculate values for the hidden layer,\n",
    "        #       and finally calculate the output layer.\n",
    "        #\n",
    "        #       Note: The review passed into this function for prediction \n",
    "        #             might come from anywhere, so you should convert it \n",
    "        #             to lower case prior to using it.\n",
    "        self.update_input_layer(review.lower())\n",
    "\n",
    "        # Hidden layer\n",
    "        layer_1 = self.layer_0.dot(self.weights_0_1)\n",
    "\n",
    "        # Output layer\n",
    "        layer_2 = self.sigmoid(layer_1.dot(self.weights_1_2))\n",
    "        # TODO: The output layer should now contain a prediction. \n",
    "        #       Return `POSITIVE` for predictions greater-than-or-equal-to `0.5`, \n",
    "        #       and `NEGATIVE` otherwise.\n",
    "        if layer_2[0] >= 0.5:\n",
    "            return 'POSITIVE'\n",
    "        else:\n",
    "            return 'NEGATIVE'"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Run the following cell to recreate the network and train it. Notice we've gone back to the higher learning rate of `0.1`."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 45,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Progress:0.0% Speed(reviews/sec):0.0 #Correct:1 #Trained:1 Training Accuracy:100.%\n",
      "Progress:10.4% Speed(reviews/sec):415.7 #Correct:1818 #Trained:2501 Training Accuracy:72.6%\n",
      "Progress:20.8% Speed(reviews/sec):412.6 #Correct:3784 #Trained:5001 Training Accuracy:75.6%\n",
      "Progress:31.2% Speed(reviews/sec):414.0 #Correct:5869 #Trained:7501 Training Accuracy:78.2%\n",
      "Progress:41.6% Speed(reviews/sec):414.0 #Correct:8008 #Trained:10001 Training Accuracy:80.0%\n",
      "Progress:52.0% Speed(reviews/sec):413.8 #Correct:10141 #Trained:12501 Training Accuracy:81.1%\n",
      "Progress:62.5% Speed(reviews/sec):410.7 #Correct:12279 #Trained:15001 Training Accuracy:81.8%\n",
      "Progress:72.9% Speed(reviews/sec):405.1 #Correct:14397 #Trained:17501 Training Accuracy:82.2%\n",
      "Progress:83.3% Speed(reviews/sec):404.4 #Correct:16572 #Trained:20001 Training Accuracy:82.8%\n",
      "Progress:93.7% Speed(reviews/sec):404.3 #Correct:18754 #Trained:22501 Training Accuracy:83.3%\n",
      "Progress:99.9% Speed(reviews/sec):404.7 #Correct:20074 #Trained:24000 Training Accuracy:83.6%"
     ]
    }
   ],
   "source": [
    "mlp = SentimentNetwork(reviews[:-1000],labels[:-1000], learning_rate=0.1)\n",
    "mlp.train(reviews[:-1000],labels[:-1000])"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "That should have trained much better than the earlier attempts. It's still not wonderful, but it should have improved dramatically. Run the following cell to test your model with 1000 predictions."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 46,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Progress:99.9% Speed(reviews/sec):1098. #Correct:849 #Tested:1000 Testing Accuracy:84.9%"
     ]
    }
   ],
   "source": [
    "mlp.test(reviews[-1000:],labels[-1000:])"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# End of Project 4. \n",
    "## Andrew's solution was actually in the previous video, so rewatch that video if you had any problems with that project. Then continue on to the next lesson.\n",
    "# Analyzing Inefficiencies in our Network<a id='lesson_5'></a>\n",
    "The following cells include the code Andrew shows in the next video. We've included it here so you can run the cells along with the video without having to type in everything."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "Image(filename='sentiment_network_sparse.png')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 47,
   "metadata": {},
   "outputs": [],
   "source": [
    "layer_0 = np.zeros(10)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 48,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([0., 0., 0., 0., 0., 0., 0., 0., 0., 0.])"
      ]
     },
     "execution_count": 48,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "layer_0"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 49,
   "metadata": {},
   "outputs": [],
   "source": [
    "layer_0[4] = 1\n",
    "layer_0[9] = 1"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 50,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([0., 0., 0., 0., 1., 0., 0., 0., 0., 1.])"
      ]
     },
     "execution_count": 50,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "layer_0"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 51,
   "metadata": {},
   "outputs": [],
   "source": [
    "weights_0_1 = np.random.randn(10,5)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 52,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([-0.10503756,  0.44222989,  0.24392938, -0.55961832,  0.21389503])"
      ]
     },
     "execution_count": 52,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "layer_0.dot(weights_0_1)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 53,
   "metadata": {},
   "outputs": [],
   "source": [
    "indices = [4,9]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 54,
   "metadata": {},
   "outputs": [],
   "source": [
    "layer_1 = np.zeros(5)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 55,
   "metadata": {},
   "outputs": [],
   "source": [
    "for index in indices:\n",
    "    layer_1 += (1 * weights_0_1[index])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 56,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([-0.10503756,  0.44222989,  0.24392938, -0.55961832,  0.21389503])"
      ]
     },
     "execution_count": 56,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "layer_1"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 57,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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br75JjfzplmpBh7mwKLss26eGb+9qdnn3nNvLZgGTAPp04DBTvruSSYk4qPOMjrPLOVpKgSVvIAHgABqcAI+4ogjPKQABlhOgApgCBAAHgAbQQ4AIYhgAD9GWwZqgJwkuKEZCqChaQoHboBQsIFuQrAJZRPgaI08su7gR0RzFqM477333l7FG220kRs1apRPGwsTwCNZ41DGecrGOlxGjb7A/TNKd+q1U137duul6dZ5WU49bZh7660/uhnTp6XOAR4BZcUz0Endo2MCmQZyGjDYyanCNorVAP9gs2LVoUyCDEGFLCV77LGHH5fmoIMOyvW6EgwACgIdppag+zcLkIMzcjwkDeBHfqoId9ppJy+HIAeAEdDE15yLL7JIAWUsQBYTnRL22msvt9tuuzVrctPgiIAPZVHTFpCDtSeEHbbPG3W++0s0UOGll12WqvF3sgA670RDLgC1FkwDpoH0asBgp4b3ZrPNNssNCIffxVlnnZXLnUpWgZ42jJxbTKB3ET2LFFSxa7811oAOH/csWHXC8oewg5WEaSQYZPDBBx/0Fh2gAxBYuHChW7RokZs/f75fGC05HnbeeWfHP3kWdBFabshHC2myACddunRxq6yyigcZAU4IPSHgJJ0X8CA7wDNp0iQvO7JRDnqbqdlNs6PTxAW0ATsCnhB2wu1zzjnPPfLwQ+6GG6fXvUkLH50zzhjmm67SbNEx0Im/GbZvGkinBv4z0lo65StJqksvvdT3UOEiRpp96623SrreIresASwVd999t7vyyitbjpzCGEClKniags477zx3Y9SbDH8QmrYYMycp7LDDDr4nFHDD6MQEgaUgirXgJg4rDDzIAIRACFASnhfk6Fi4ZjsEJ/JV76uTTz7ZYWUDfi688EI3bdo0b7EJHacBHCw7svCE52TdQR/o5corr4jmM7vbbd+jm7tqwqS69dKi19XIs0e4jh07ucmTJqS26cpAh6fRgmkgGxpoKNjJhsqzLSU9jfbZZx+3ceSPksVApc6CtebQQw91+N/84he/+FpRgJpdd93Vd09nCgauUQgBBFAR5AhaWAtYwu1NNtnEvffee45BDddbb71cUxVxw0Vww5oAjAjQJD/xaY7Dssd0GITrrrsumhhzaM45WU1W8j/C6sOitAQ5SpM0Djhgfw99559/gZv/3HOO8YlqNa0E1pwbp890I0ec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\n",
      "text/plain": [
       "<IPython.core.display.Image object>"
      ]
     },
     "execution_count": 57,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "Image(filename='sentiment_network_sparse_2.png')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 58,
   "metadata": {},
   "outputs": [],
   "source": [
    "layer_1 = np.zeros(5)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 59,
   "metadata": {},
   "outputs": [],
   "source": [
    "for index in indices:\n",
    "    layer_1 += (weights_0_1[index])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 60,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([-0.10503756,  0.44222989,  0.24392938, -0.55961832,  0.21389503])"
      ]
     },
     "execution_count": 60,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "layer_1"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Project 5: Making our Network More Efficient<a id='project_5'></a>\n",
    "**TODO:** Make the `SentimentNetwork` class more efficient by eliminating unnecessary multiplications and additions that occur during forward and backward propagation. To do that, you can do the following:\n",
    "* Copy the `SentimentNetwork` class from the previous project into the following cell.\n",
    "* Remove the `update_input_layer` function - you will not need it in this version.\n",
    "* Modify `init_network`:\n",
    ">* You no longer need a separate input layer, so remove any mention of `self.layer_0`\n",
    ">* You will be dealing with the old hidden layer more directly, so create `self.layer_1`, a two-dimensional matrix with shape 1 x hidden_nodes, with all values initialized to zero\n",
    "* Modify `train`:\n",
    ">* Change the name of the input parameter `training_reviews` to `training_reviews_raw`. This will help with the next step.\n",
    ">* At the beginning of the function, you'll want to preprocess your reviews to convert them to a list of indices (from `word2index`) that are actually used in the review. This is equivalent to what you saw in the video when Andrew set specific indices to 1. Your code should create a local `list` variable named `training_reviews` that should contain a `list` for each review in `training_reviews_raw`. Those lists should contain the indices for words found in the review.\n",
    ">* Remove call to `update_input_layer`\n",
    ">* Use `self`'s  `layer_1` instead of a local `layer_1` object.\n",
    ">* In the forward pass, replace the code that updates `layer_1` with new logic that only adds the weights for the indices used in the review.\n",
    ">* When updating `weights_0_1`, only update the individual weights that were used in the forward pass.\n",
    "* Modify `run`:\n",
    ">* Remove call to `update_input_layer` \n",
    ">* Use `self`'s  `layer_1` instead of a local `layer_1` object.\n",
    ">* Much like you did in `train`, you will need to pre-process the `review` so you can work with word indices, then update `layer_1` by adding weights for the indices used in the review."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 61,
   "metadata": {},
   "outputs": [],
   "source": [
    "# TODO: -Copy the SentimentNetwork class from Project 4 lesson\n",
    "#       -Modify it according to the above instructions \n",
    "import time\n",
    "import sys\n",
    "import numpy as np\n",
    "\n",
    "# Encapsulate our neural network in a class\n",
    "class SentimentNetwork:\n",
    "    def __init__(self, reviews, labels, hidden_nodes = 10, learning_rate = 0.1):\n",
    "        \"\"\"Create a SentimenNetwork with the given settings\n",
    "        Args:\n",
    "            reviews(list) - List of reviews used for training\n",
    "            labels(list) - List of POSITIVE/NEGATIVE labels associated with the given reviews\n",
    "            hidden_nodes(int) - Number of nodes to create in the hidden layer\n",
    "            learning_rate(float) - Learning rate to use while training\n",
    "        \n",
    "        \"\"\"\n",
    "        # Assign a seed to our random number generator to ensure we get\n",
    "        # reproducable results during development \n",
    "        np.random.seed(1)\n",
    "\n",
    "        # process the reviews and their associated labels so that everything\n",
    "        # is ready for training\n",
    "        self.pre_process_data(reviews, labels)\n",
    "        \n",
    "        # Build the network to have the number of hidden nodes and the learning rate that\n",
    "        # were passed into this initializer. Make the same number of input nodes as\n",
    "        # there are vocabulary words and create a single output node.\n",
    "        self.init_network(len(self.review_vocab),hidden_nodes, 1, learning_rate)\n",
    "\n",
    "    def pre_process_data(self, reviews, labels):\n",
    "        \n",
    "        review_vocab = set()\n",
    "        # TODO: populate review_vocab with all of the words in the given reviews\n",
    "        #       Remember to split reviews into individual words \n",
    "        #       using \"split(' ')\" instead of \"split()\".\n",
    "        for review in reviews:\n",
    "            for word in review.split(\" \"):\n",
    "                review_vocab.add(word)\n",
    "        # Convert the vocabulary set to a list so we can access words via indices\n",
    "        self.review_vocab = list(review_vocab)\n",
    "        \n",
    "        label_vocab = set()\n",
    "        # TODO: populate label_vocab with all of the words in the given labels.\n",
    "        #       There is no need to split the labels because each one is a single word.\n",
    "        for label in labels:\n",
    "            label_vocab.add(label)\n",
    "        \n",
    "        # Convert the label vocabulary set to a list so we can access labels via indices\n",
    "        self.label_vocab = list(label_vocab)\n",
    "        \n",
    "        # Store the sizes of the review and label vocabularies.\n",
    "        self.review_vocab_size = len(self.review_vocab)\n",
    "        self.label_vocab_size = len(self.label_vocab)\n",
    "        \n",
    "        # Create a dictionary of words in the vocabulary mapped to index positions\n",
    "        self.word2index = {}\n",
    "        # TODO: populate self.word2index with indices for all the words in self.review_vocab\n",
    "        #       like you saw earlier in the notebook\n",
    "        for i, word in enumerate(self.review_vocab):\n",
    "            self.word2index[word] = i\n",
    "        \n",
    "        # Create a dictionary of labels mapped to index positions\n",
    "        self.label2index = {}\n",
    "        # TODO: do the same thing you did for self.word2index and self.review_vocab, \n",
    "        #       but for self.label2index and self.label_vocab instead\n",
    "        for i, label in enumerate(self.label_vocab):\n",
    "            self.label2index[label] = i \n",
    "        \n",
    "    def init_network(self, input_nodes, hidden_nodes, output_nodes, learning_rate):\n",
    "        # Store the number of nodes in input, hidden, and output layers.\n",
    "        self.input_nodes = input_nodes\n",
    "        self.hidden_nodes = hidden_nodes\n",
    "        self.output_nodes = output_nodes\n",
    "\n",
    "        # Store the learning rate\n",
    "        self.learning_rate = learning_rate\n",
    "\n",
    "        # Initialize weights\n",
    "\n",
    "        self.weights_0_1 = np.zeros((self.input_nodes,self.hidden_nodes))\n",
    "\n",
    "        self.weights_1_2 = np.random.normal(0.0, self.output_nodes**-0.5, \n",
    "                                                (self.hidden_nodes, self.output_nodes))\n",
    "\n",
    "        self.layer_1 = np.zeros((1,hidden_nodes))\n",
    "    \n",
    "                \n",
    "    def get_target_for_label(self,label):\n",
    "        # TODO: Copy the code you wrote for get_target_for_label \n",
    "        #       earlier in this notebook. \n",
    "        if(label == 'POSITIVE'):\n",
    "            return 1\n",
    "        else:\n",
    "            return 0\n",
    "        \n",
    "    def sigmoid(self,x):\n",
    "        # TODO: Return the result of calculating the sigmoid activation function\n",
    "        #       shown in the lectures\n",
    "        return 1 / (1 + np.exp(-x))\n",
    "    \n",
    "    def sigmoid_output_2_derivative(self,output):\n",
    "        # TODO: Return the derivative of the sigmoid activation function, \n",
    "        #       where \"output\" is the original output from the sigmoid fucntion \n",
    "        return output * (1 - output)\n",
    "\n",
    "    def train(self, training_reviews_raw, training_labels):\n",
    "        \n",
    "        training_reviews = list()\n",
    "        for review in training_reviews_raw:\n",
    "            indices = set()\n",
    "            for word in review.split(\" \"):\n",
    "                if(word in self.word2index.keys()):\n",
    "                    indices.add(self.word2index[word])\n",
    "            training_reviews.append(list(indices))\n",
    "        # make sure out we have a matching number of reviews and labels\n",
    "        assert(len(training_reviews) == len(training_labels))\n",
    "        \n",
    "        # Keep track of correct predictions to display accuracy during training \n",
    "        correct_so_far = 0\n",
    "        \n",
    "        # Remember when we started for printing time statistics\n",
    "        start = time.time()\n",
    "\n",
    "        # loop through all the given reviews and run a forward and backward pass,\n",
    "        # updating weights for every item\n",
    "        for i in range(len(training_reviews)):\n",
    "            \n",
    "            # TODO: Get the next review and its correct label\n",
    "            review = training_reviews[i]\n",
    "            label = training_labels[i]\n",
    "            \n",
    "            self.layer_1 *= 0\n",
    "            for index in review:\n",
    "                self.layer_1 += self.weights_0_1[index]\n",
    "\n",
    "            layer_2 = self.sigmoid(self.layer_1.dot(self.weights_1_2))            \n",
    "            \n",
    "            #Error calculation\n",
    "            layer_2_error = layer_2 - self.get_target_for_label(label) # Output layer error is the difference between desired target and actual output.\n",
    "            layer_2_delta = layer_2_error * self.sigmoid_output_2_derivative(layer_2)\n",
    "\n",
    "            layer_1_error = layer_2_delta.dot(self.weights_1_2.T) \n",
    "            layer_1_delta = layer_1_error \n",
    "\n",
    "\n",
    "            self.weights_1_2 -= self.layer_1.T.dot(layer_2_delta) * self.learning_rate \n",
    "            for index in review:\n",
    "                self.weights_0_1[index] -= layer_1_delta[0] * self.learning_rate \n",
    "\n",
    "            # TODO: Keep track of correct predictions. To determine if the prediction was\n",
    "            #       correct, check that the absolute value of the output error \n",
    "            #       is less than 0.5. If so, add one to the correct_so_far count.\n",
    "            if(layer_2 >= 0.5 and label == 'POSITIVE'):\n",
    "                correct_so_far += 1\n",
    "            elif(layer_2 < 0.5 and label == 'NEGATIVE'):\n",
    "                correct_so_far += 1\n",
    "            # For debug purposes, print out our prediction accuracy and speed \n",
    "            # throughout the training process. \n",
    "\n",
    "            elapsed_time = float(time.time() - start)\n",
    "            reviews_per_second = i / elapsed_time if elapsed_time > 0 else 0\n",
    "            \n",
    "            sys.stdout.write(\"\\rProgress:\" + str(100 * i/float(len(training_reviews)))[:4] \\\n",
    "                             + \"% Speed(reviews/sec):\" + str(reviews_per_second)[0:5] \\\n",
    "                             + \" #Correct:\" + str(correct_so_far) + \" #Trained:\" + str(i+1) \\\n",
    "                             + \" Training Accuracy:\" + str(correct_so_far * 100 / float(i+1))[:4] + \"%\")\n",
    "            if(i % 2500 == 0):\n",
    "                print(\"\")\n",
    "    \n",
    "    def test(self, testing_reviews, testing_labels):\n",
    "        \"\"\"\n",
    "        Attempts to predict the labels for the given testing_reviews,\n",
    "        and uses the test_labels to calculate the accuracy of those predictions.\n",
    "        \"\"\"\n",
    "        \n",
    "        # keep track of how many correct predictions we make\n",
    "        correct = 0\n",
    "\n",
    "        # we'll time how many predictions per second we make\n",
    "        start = time.time()\n",
    "\n",
    "        # Loop through each of the given reviews and call run to predict\n",
    "        # its label. \n",
    "        for i in range(len(testing_reviews)):\n",
    "            pred = self.run(testing_reviews[i])\n",
    "            if(pred == testing_labels[i]):\n",
    "                correct += 1\n",
    "            \n",
    "            # For debug purposes, print out our prediction accuracy and speed \n",
    "            # throughout the prediction process. \n",
    "\n",
    "            elapsed_time = float(time.time() - start)\n",
    "            reviews_per_second = i / elapsed_time if elapsed_time > 0 else 0\n",
    "            \n",
    "            sys.stdout.write(\"\\rProgress:\" + str(100 * i/float(len(testing_reviews)))[:4] \\\n",
    "                             + \"% Speed(reviews/sec):\" + str(reviews_per_second)[0:5] \\\n",
    "                             + \" #Correct:\" + str(correct) + \" #Tested:\" + str(i+1) \\\n",
    "                             + \" Testing Accuracy:\" + str(correct * 100 / float(i+1))[:4] + \"%\")\n",
    "    \n",
    "    def run(self, review):\n",
    "        \"\"\"\n",
    "        Returns a POSITIVE or NEGATIVE prediction for the given review.\n",
    "        \"\"\"\n",
    "        self.layer_1 *= 0\n",
    "        unique_indices = set()\n",
    "        for word in review.lower().split(\" \"):\n",
    "            if word in self.word2index.keys():\n",
    "                unique_indices.add(self.word2index[word])\n",
    "        for index in unique_indices:\n",
    "            self.layer_1 += self.weights_0_1[index]\n",
    "        \n",
    "        layer_2 = self.sigmoid(self.layer_1.dot(self.weights_1_2))\n",
    "\n",
    "        if layer_2[0] >= 0.5:\n",
    "            return 'POSITIVE'\n",
    "        else:\n",
    "            return 'NEGATIVE'"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Run the following cell to recreate the network and train it once again."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 62,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Progress:0.0% Speed(reviews/sec):0.0 #Correct:1 #Trained:1 Training Accuracy:100.%\n",
      "Progress:10.4% Speed(reviews/sec):1332. #Correct:1797 #Trained:2501 Training Accuracy:71.8%\n",
      "Progress:20.8% Speed(reviews/sec):1336. #Correct:3798 #Trained:5001 Training Accuracy:75.9%\n",
      "Progress:31.2% Speed(reviews/sec):1297. #Correct:5880 #Trained:7501 Training Accuracy:78.3%\n",
      "Progress:41.6% Speed(reviews/sec):1267. #Correct:8009 #Trained:10001 Training Accuracy:80.0%\n",
      "Progress:52.0% Speed(reviews/sec):1241. #Correct:10148 #Trained:12501 Training Accuracy:81.1%\n",
      "Progress:62.5% Speed(reviews/sec):1253. #Correct:12283 #Trained:15001 Training Accuracy:81.8%\n",
      "Progress:72.9% Speed(reviews/sec):1255. #Correct:14396 #Trained:17501 Training Accuracy:82.2%\n",
      "Progress:83.3% Speed(reviews/sec):1257. #Correct:16577 #Trained:20001 Training Accuracy:82.8%\n",
      "Progress:93.7% Speed(reviews/sec):1255. #Correct:18761 #Trained:22501 Training Accuracy:83.3%\n",
      "Progress:99.9% Speed(reviews/sec):1254. #Correct:20080 #Trained:24000 Training Accuracy:83.6%"
     ]
    }
   ],
   "source": [
    "mlp = SentimentNetwork(reviews[:-1000],labels[:-1000], learning_rate=0.1)\n",
    "mlp.train(reviews[:-1000],labels[:-1000])"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "That should have trained much better than the earlier attempts. Run the following cell to test your model with 1000 predictions."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 63,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Progress:99.9% Speed(reviews/sec):2415. #Correct:851 #Tested:1000 Testing Accuracy:85.1%"
     ]
    }
   ],
   "source": [
    "mlp.test(reviews[-1000:],labels[-1000:])"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# End of Project 5. \n",
    "## Watch the next video to see Andrew's solution, then continue on to the next lesson.\n",
    "# Further Noise Reduction<a id='lesson_6'></a>"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "Image(filename='sentiment_network_sparse_2.png')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 64,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "[('edie', 4.6913478822291435),\n",
       " ('paulie', 4.07753744390572),\n",
       " ('felix', 3.152736022363656),\n",
       " ('polanski', 2.8233610476132043),\n",
       " ('matthau', 2.80672172860924),\n",
       " ('victoria', 2.681021528714291),\n",
       " ('mildred', 2.6026896854443837),\n",
       " ('gandhi', 2.538973871058276),\n",
       " ('flawless', 2.451005098112319),\n",
       " ('superbly', 2.26002547857525),\n",
       " ('perfection', 2.159484249353372),\n",
       " ('astaire', 2.1400661634962708),\n",
       " ('captures', 2.038619547159581),\n",
       " ('voight', 2.030170492673053),\n",
       " ('wonderfully', 2.0218960560332353),\n",
       " ('powell', 1.978345424808467),\n",
       " ('brosnan', 1.9547990964725592),\n",
       " ('lily', 1.9203768470501485),\n",
       " ('bakshi', 1.9029851043382795),\n",
       " ('lincoln', 1.9014583864844796),\n",
       " ('refreshing', 1.8551812956655511),\n",
       " ('breathtaking', 1.8481124057791867),\n",
       " ('bourne', 1.8478489358790986),\n",
       " ('lemmon', 1.8458266904983307),\n",
       " ('delightful', 1.8002701588959635),\n",
       " ('flynn', 1.7996646487351682),\n",
       " ('andrews', 1.7764919970972666),\n",
       " ('homer', 1.7692866133759964),\n",
       " ('beautifully', 1.7626953362841438),\n",
       " ('soccer', 1.7578579175523736),\n",
       " ('elvira', 1.739703107272002),\n",
       " ('underrated', 1.7197859696029656),\n",
       " ('gripping', 1.7165360479904674),\n",
       " ('superb', 1.7091514458966952),\n",
       " ('delight', 1.6714733033535532),\n",
       " ('welles', 1.667706820558076),\n",
       " ('sadness', 1.663505133704376),\n",
       " ('sinatra', 1.6389967146756448),\n",
       " ('touching', 1.637217476541176),\n",
       " ('timeless', 1.62924053973028),\n",
       " ('macy', 1.6211339521972916),\n",
       " ('unforgettable', 1.6177367152487956),\n",
       " ('favorites', 1.6158688027643908),\n",
       " ('stewart', 1.611998733295774),\n",
       " ('sullivan', 1.6094379124341003),\n",
       " ('extraordinary', 1.6094379124341003),\n",
       " ('hartley', 1.6094379124341003),\n",
       " ('brilliantly', 1.5950491749820008),\n",
       " ('friendship', 1.5677652160335325),\n",
       " ('wonderful', 1.5645425925262093),\n",
       " ('palma', 1.5553706911638245),\n",
       " ('magnificent', 1.54663701119507),\n",
       " ('finest', 1.546259010812569),\n",
       " ('jackie', 1.5439233053234738),\n",
       " ('ritter', 1.540445040947149),\n",
       " ('tremendous', 1.5184661342283736),\n",
       " ('freedom', 1.5091151908062312),\n",
       " ('fantastic', 1.5048433868558566),\n",
       " ('terrific', 1.5026699370083942),\n",
       " ('noir', 1.493925025312256),\n",
       " ('sidney', 1.493925025312256),\n",
       " ('outstanding', 1.4910053152089213),\n",
       " ('pleasantly', 1.4894785973551214),\n",
       " ('mann', 1.4894785973551214),\n",
       " ('nancy', 1.488077055429833),\n",
       " ('marie', 1.4825711915553104),\n",
       " ('marvelous', 1.4739999415389962),\n",
       " ('excellent', 1.4647538505723599),\n",
       " ('ruth', 1.4596256342054401),\n",
       " ('stanwyck', 1.4412101187160054),\n",
       " ('widmark', 1.4350845252893227),\n",
       " ('splendid', 1.4271163556401458),\n",
       " ('chan', 1.423108334242607),\n",
       " ('exceptional', 1.4201959127955721),\n",
       " ('tender', 1.410986973710262),\n",
       " ('gentle', 1.4078005663408544),\n",
       " ('poignant', 1.4022947024663317),\n",
       " ('gem', 1.3932148039644643),\n",
       " ('amazing', 1.3919815802404802),\n",
       " ('chilling', 1.3862943611198906),\n",
       " ('fisher', 1.3862943611198906),\n",
       " ('davies', 1.3862943611198906),\n",
       " ('captivating', 1.3862943611198906),\n",
       " ('darker', 1.3652409519220583),\n",
       " ('april', 1.349926716949016),\n",
       " ('kelly', 1.3461743673304654),\n",
       " ('blake', 1.3418425985490567),\n",
       " ('overlooked', 1.329135947279942),\n",
       " ('ralph', 1.32818673031261),\n",
       " ('bette', 1.3156767939059373),\n",
       " ('hoffman', 1.315066851831523),\n",
       " ('cole', 1.3121863889661687),\n",
       " ('shines', 1.3049487216659381),\n",
       " ('powerful', 1.2999662776313934),\n",
       " ('notch', 1.2950456896547455),\n",
       " ('remarkable', 1.2883688239495823),\n",
       " ('pitt', 1.286210902562908),\n",
       " ('winters', 1.2833463918674481),\n",
       " ('vivid', 1.2762934659055623),\n",
       " ('gritty', 1.2757524867200667),\n",
       " ('giallo', 1.274502955131774),\n",
       " ('portrait', 1.270462545594769),\n",
       " ('innocence', 1.2694300209805796),\n",
       " ('psychiatrist', 1.2685113254635072),\n",
       " ('favorite', 1.2668956297860055),\n",
       " ('ensemble', 1.2656663733312759),\n",
       " ('stunning', 1.2622417124499117),\n",
       " ('burns', 1.259880436264232),\n",
       " ('garbo', 1.258954938743289),\n",
       " ('barbara', 1.2580400255962119),\n",
       " ('philip', 1.252762968495368),\n",
       " ('panic', 1.252762968495368),\n",
       " ('holly', 1.252762968495368),\n",
       " ('carol', 1.2481440226390734),\n",
       " ('perfect', 1.246742480713785),\n",
       " ('appreciated', 1.2462482874741743),\n",
       " ('favourite', 1.2411123512753928),\n",
       " ('journey', 1.236762627148927),\n",
       " ('rural', 1.235471471385307),\n",
       " ('bond', 1.2321436812926323),\n",
       " ('builds', 1.2305398317106577),\n",
       " ('brilliant', 1.2287554137664785),\n",
       " ('brooklyn', 1.2286654169163074),\n",
       " ('von', 1.225175011976539),\n",
       " ('recommended', 1.2163953243244932),\n",
       " ('unfolds', 1.2163953243244932),\n",
       " ('daniel', 1.20215296760895),\n",
       " ('perfectly', 1.1971931173405572),\n",
       " ('crafted', 1.1962507582320256),\n",
       " ('prince', 1.1939224684724346),\n",
       " ('troubled', 1.192138346678933),\n",
       " ('consequences', 1.1865810616140668),\n",
       " ('haunting', 1.1814999484738773),\n",
       " ('cinderella', 1.180052620608284),\n",
       " ('alexander', 1.17599895228353),\n",
       " ('emotions', 1.1753049094563641),\n",
       " ('boxing', 1.1735135968412274),\n",
       " ('subtle', 1.173413501750808),\n",
       " ('curtis', 1.1649873576129823),\n",
       " ('rare', 1.1566438362402944),\n",
       " ('loved', 1.1563661500586044),\n",
       " ('daughters', 1.1526795099383853),\n",
       " ('courage', 1.1438688802562305),\n",
       " ('dentist', 1.1426722784621401),\n",
       " ('highly', 1.1420208631618658),\n",
       " ('nominated', 1.1409146683587992),\n",
       " ('tony', 1.139749194228599),\n",
       " ('draws', 1.132513840343791),\n",
       " ('everyday', 1.1306150197542835),\n",
       " ('contrast', 1.128465251817791),\n",
       " ('cried', 1.121340539745666),\n",
       " ('fabulous', 1.1210851445201684),\n",
       " ('ned', 1.120591195386885),\n",
       " ('fay', 1.120591195386885),\n",
       " ('emma', 1.1184149159642893),\n",
       " ('sensitive', 1.113318436057805),\n",
       " ('smooth', 1.1089750757036563),\n",
       " ('dramas', 1.1080910326226534),\n",
       " ('today', 1.1050431789984),\n",
       " ('helps', 1.1023091505494358),\n",
       " ('inspiring', 1.0986122886681098),\n",
       " ('jimmy', 1.0937696641923216),\n",
       " ('awesome', 1.0931328229034842),\n",
       " ('unique', 1.0881409888008142),\n",
       " ('tragic', 1.0871835928444868),\n",
       " ('intense', 1.0870514662670339),\n",
       " ('stellar', 1.0857088838322018),\n",
       " ('rival', 1.0822184788924332),\n",
       " ('provides', 1.079708134028957),\n",
       " ('depression', 1.0782034170369026),\n",
       " ('shy', 1.0775588794702773),\n",
       " ('carrie', 1.076139432816051),\n",
       " ('blend', 1.0753554265038423),\n",
       " ('hank', 1.0736109864626924),\n",
       " ('diana', 1.072636802264849),\n",
       " ('adorable', 1.072636802264849),\n",
       " ('unexpected', 1.0722255334949147),\n",
       " ('achievement', 1.0668635903535293),\n",
       " ('bettie', 1.0663514264498881),\n",
       " ('happiness', 1.0632729222228008),\n",
       " ('glorious', 1.0608719606852626),\n",
       " ('davis', 1.0541605260972757),\n",
       " ('terrifying', 1.0525211814678428),\n",
       " ('beauty', 1.050410186850232),\n",
       " ('ideal', 1.0479685558493548),\n",
       " ('fears', 1.0467872208035236),\n",
       " ('hong', 1.0438040521731147),\n",
       " ('seasons', 1.0433496099930604),\n",
       " ('fascinating', 1.0414538748281612),\n",
       " ('carries', 1.0345904299031787),\n",
       " ('satisfying', 1.0321225473992768),\n",
       " ('definite', 1.0319209141694374),\n",
       " ('touched', 1.0296194171811581),\n",
       " ('greatest', 1.0248947127715422),\n",
       " ('creates', 1.0241097613701886),\n",
       " ('aunt', 1.023388867430522),\n",
       " ('walter', 1.022328983918479),\n",
       " ('spectacular', 1.0198314108149955),\n",
       " ('portrayal', 1.0189810189761024),\n",
       " ('ann', 1.0127808528183286),\n",
       " ('enterprise', 1.0116009116784799),\n",
       " ('musicals', 1.0096648026516135),\n",
       " ('deeply', 1.0094845087721023),\n",
       " ('incredible', 1.0061677561461084),\n",
       " ('mature', 1.0060195018402847),\n",
       " ('triumph', 0.9968295943581673),\n",
       " ('margaret', 0.9968295943581673),\n",
       " ('navy', 0.9949338591932683),\n",
       " ('harry', 0.9917691930500606),\n",
       " ('lucas', 0.990398704027877),\n",
       " ('sweet', 0.9896611048795548),\n",
       " ('joey', 0.9879467207805901),\n",
       " ('oscar', 0.9872190511104971),\n",
       " ('balance', 0.9864949905474035),\n",
       " ('warm', 0.9848534033114517),\n",
       " ('ages', 0.9844989819006886),\n",
       " ('guilt', 0.9808292530117262),\n",
       " ('glover', 0.9808292530117262),\n",
       " ('carrey', 0.9808292530117262),\n",
       " ('learns', 0.978811088855489),\n",
       " ('unusual', 0.9778837427819693),\n",
       " ('sons', 0.977775815524836),\n",
       " ('complex', 0.977618977381478),\n",
       " ('essence', 0.9775343571148737),\n",
       " ('brazil', 0.9769153536905899),\n",
       " ('widow', 0.9765095918672099),\n",
       " ('solid', 0.9753796482441615),\n",
       " ('beautiful', 0.9732630126284105),\n",
       " ('holmes', 0.9724610033412096),\n",
       " ('awe', 0.9718605830289658),\n",
       " ('vhs', 0.9711673420999893),\n",
       " ('eerie', 0.9711673420999893),\n",
       " ('lonely', 0.9687372072466975),\n",
       " ('grim', 0.9687372072466975),\n",
       " ('sport', 0.9682504708048661),\n",
       " ('debut', 0.965080896043587),\n",
       " ('destiny', 0.963437510299857),\n",
       " ('thrillers', 0.9628107475090479),\n",
       " ('tears', 0.9597758438138939),\n",
       " ('rose', 0.9566420273977225),\n",
       " ('feelings', 0.9555114450274363),\n",
       " ('ginger', 0.9555114450274363),\n",
       " ('winning', 0.9547181090080405),\n",
       " ('stanley', 0.953873443023198),\n",
       " ('cox', 0.9534302788236119),\n",
       " ('paris', 0.9527847903047266),\n",
       " ('heart', 0.9523880692451681),\n",
       " ('hooked', 0.951558870711613),\n",
       " ('comfortable', 0.9480394301887354),\n",
       " ('mgm', 0.9444616088408515),\n",
       " ('masterpiece', 0.941550398633393),\n",
       " ('themes', 0.9411882834958823),\n",
       " ('danny', 0.9396711805182187),\n",
       " ('anime', 0.9337838893216722),\n",
       " ('perry', 0.9332883082427261),\n",
       " ('joy', 0.9330175256794686),\n",
       " ('lovable', 0.9308188324370649),\n",
       " ('mysteries', 0.9295359586241757),\n",
       " ('hal', 0.9295359586241757),\n",
       " ('louis', 0.9287132518727123),\n",
       " ('charming', 0.9252060955321074),\n",
       " ('urban', 0.9236708391717776),\n",
       " ('allows', 0.9218309122497704),\n",
       " ('impact', 0.9181581460489504),\n",
       " ('italy', 0.9162907318741551),\n",
       " ('gradually', 0.9162907318741551),\n",
       " ('lifestyle', 0.9162907318741551),\n",
       " ('spy', 0.9128951428730169),\n",
       " ('treat', 0.9119334265051994),\n",
       " ('subsequent', 0.9105600571651701),\n",
       " ('kennedy', 0.9098182173685376),\n",
       " ('loving', 0.9096754927554359),\n",
       " ('surprising', 0.9093702890295813),\n",
       " ('quiet', 0.9064867317775342),\n",
       " ('winter', 0.9062403960206536),\n",
       " ('reveals', 0.9049054096490298),\n",
       " ('raw', 0.9044562742271522),\n",
       " ('funniest', 0.9007865453381899),\n",
       " ('pleased', 0.8999415938726256),\n",
       " ('norman', 0.8999415938726256),\n",
       " ('thief', 0.8987464222232455),\n",
       " ('season', 0.8982722263714767),\n",
       " ('secrets', 0.8979415932059586),\n",
       " ('colorful', 0.8970593699462676),\n",
       " ('highest', 0.8967461358011849),\n",
       " ('compelling', 0.8946292350929758),\n",
       " ('danes', 0.8924800831804366),\n",
       " ('castle', 0.889677083356065),\n",
       " ('kudos', 0.8888917576860407),\n",
       " ('great', 0.8881047090146459),\n",
       " ('baseball', 0.8873031950009027),\n",
       " ('subtitles', 0.8873031950009027),\n",
       " ('bleak', 0.8873031950009027),\n",
       " ('winner', 0.8864377687244739),\n",
       " ('tragedy', 0.8856369907831526),\n",
       " ('todd', 0.8855190732074014),\n",
       " ('nicely', 0.879249460193806),\n",
       " ('arthur', 0.8754687373538999),\n",
       " ('essential', 0.8737311174553593),\n",
       " ('gorgeous', 0.8731725250935497),\n",
       " ('fonda', 0.8729402910005413),\n",
       " ('eastwood', 0.871395411966264),\n",
       " ('focuses', 0.8708283577973978),\n",
       " ('enjoyed', 0.8707019595162461),\n",
       " ('natural', 0.8699792450691284),\n",
       " ('intensity', 0.868351269585036),\n",
       " ('witty', 0.8682410342324468),\n",
       " ('rob', 0.8642954367557748),\n",
       " ('worlds', 0.8637726975907087),\n",
       " ('health', 0.861138911799075),\n",
       " ('magical', 0.8595379152817056),\n",
       " ('deeper', 0.8580218237501793),\n",
       " ('lucy', 0.8561868078044496),\n",
       " ('moving', 0.8556661100577203),\n",
       " ('lovely', 0.8529064000468131),\n",
       " ('purple', 0.8513711857748395),\n",
       " ('memorable', 0.8480118911208606),\n",
       " ('sings', 0.8472978603872037),\n",
       " ('craig', 0.8434293836092832),\n",
       " ('modesty', 0.8434293836092832),\n",
       " ('relate', 0.8432655968592652),\n",
       " ('episodes', 0.8422371208413729),\n",
       " ('strong', 0.8416713577706093),\n",
       " ('smith', 0.8395981110859005),\n",
       " ('tear', 0.8370413602200144),\n",
       " ('apartment', 0.8333311529054953),\n",
       " ('princess', 0.8329091229351039),\n",
       " ('disagree', 0.8329091229351039),\n",
       " ('kung', 0.831733343846092),\n",
       " ('adventure', 0.8315056139327839),\n",
       " ('columbo', 0.8266785731844679),\n",
       " ('jake', 0.8266785731844679),\n",
       " ('adds', 0.8248565259145232),\n",
       " ('hart', 0.8247235383486646),\n",
       " ('strength', 0.8241754429663494),\n",
       " ('realizes', 0.8236000689573806),\n",
       " ('dave', 0.8232003088081431),\n",
       " ('childhood', 0.8220808639358386),\n",
       " ('forbidden', 0.8198988861990891),\n",
       " ('tight', 0.818835395723442),\n",
       " ('surreal', 0.8178506590609026),\n",
       " ('manager', 0.8177099032017076),\n",
       " ('dancer', 0.8157495026522776),\n",
       " ('studios', 0.8109302162163288),\n",
       " ('con', 0.8109302162163288),\n",
       " ('miike', 0.8082165103447326),\n",
       " ('realistic', 0.8080771472339223),\n",
       " ('explicit', 0.8079226951523736),\n",
       " ('kurt', 0.8060875917405409),\n",
       " ('traditional', 0.8053591711668733),\n",
       " ('deals', 0.8053591711668733),\n",
       " ('holds', 0.8049385865480619),\n",
       " ('carl', 0.8043728156701697),\n",
       " ('touches', 0.8039615469002355),\n",
       " ('gene', 0.8031480757742738),\n",
       " ('albert', 0.8027669055771679),\n",
       " ('abc', 0.8023464725249373),\n",
       " ('cry', 0.8001193001121131),\n",
       " ('sides', 0.7995275841185171),\n",
       " ('develops', 0.7985076962177716),\n",
       " ('eyre', 0.7985076962177716),\n",
       " ('dances', 0.7969439742415889),\n",
       " ('oscars', 0.7963314167951762),\n",
       " ('legendary', 0.7960045659996531),\n",
       " ('hearted', 0.7949298748698876),\n",
       " ('importance', 0.7949298748698876),\n",
       " ('portraying', 0.7935659283069927),\n",
       " ('impressed', 0.7925810775481322),\n",
       " ('waters', 0.7911275889201491),\n",
       " ('empire', 0.7907856501238614),\n",
       " ('edge', 0.789774016249017),\n",
       " ('jean', 0.7884573603642703),\n",
       " ('environment', 0.7884573603642703),\n",
       " ('sentimental', 0.7864791203521645),\n",
       " ('captured', 0.7862376036259573),\n",
       " ('styles', 0.7859289140109116),\n",
       " ('daring', 0.7859289140109116),\n",
       " ('frank', 0.7827593392496325),\n",
       " ('tense', 0.7827593392496325),\n",
       " ('backgrounds', 0.7827593392496325),\n",
       " ('matches', 0.7827593392496325),\n",
       " ('gothic', 0.7820946665764414),\n",
       " ('sharp', 0.7814397877056235),\n",
       " ('achieved', 0.780158557549575),\n",
       " ('court', 0.7794752640484425),\n",
       " ('steals', 0.7789140023173704),\n",
       " ('rules', 0.7784447610718404),\n",
       " ('colors', 0.7768461994365922),\n",
       " ('reunion', 0.7731898882334817),\n",
       " ('covers', 0.7713993774596934),\n",
       " ('tale', 0.7701082216960737),\n",
       " ('rain', 0.7683706017975328),\n",
       " ('denzel', 0.768048488733063),\n",
       " ('stays', 0.7678707267558819),\n",
       " ('blob', 0.7672551527136672),\n",
       " ('maria', 0.7621400520468967),\n",
       " ('conventional', 0.7621400520468967),\n",
       " ('fresh', 0.7615843421131738),\n",
       " ('midnight', 0.7609697768987064),\n",
       " ('landscape', 0.758529939822797),\n",
       " ('animated', 0.7576857016975165),\n",
       " ('titanic', 0.7566605862822713),\n",
       " ('sunday', 0.7566605862822713),\n",
       " ('spring', 0.7537718023763802),\n",
       " ('cagney', 0.7537718023763802),\n",
       " ('enjoyable', 0.7524637577163648),\n",
       " ('immensely', 0.7519876805828787),\n",
       " ('sir', 0.7507762933965817),\n",
       " ('nevertheless', 0.7506710246981319),\n",
       " ('driven', 0.7499447789530785),\n",
       " ('performances', 0.7488325251606314),\n",
       " ('memories', 0.7472144018302211),\n",
       " ('nowadays', 0.7472144018302211),\n",
       " ('simple', 0.7464142097414326),\n",
       " ('golden', 0.7453329337305156),\n",
       " ('leslie', 0.7453329337305156),\n",
       " ('lovers', 0.7449722484245312),\n",
       " ('relationship', 0.7448423234560179),\n",
       " ('supporting', 0.7435780341868372),\n",
       " ('che', 0.742627237823315),\n",
       " ('packed', 0.7410032017375805),\n",
       " ('trek', 0.7402146914179311),\n",
       " ('provoking', 0.7384037721480662),\n",
       " ('strikes', 0.7375989431307791),\n",
       " ('depiction', 0.736822244062607),\n",
       " ('emotional', 0.7367821164568152),\n",
       " ('secretary', 0.7366322924996842),\n",
       " ('influenced', 0.7351113796589775),\n",
       " ('florida', 0.7351113796589775),\n",
       " ('germany', 0.7328875092094594),\n",
       " ('brings', 0.7314293671309623),\n",
       " ('lewis', 0.7312989465243216),\n",
       " ('elderly', 0.7308875085427924),\n",
       " ('owner', 0.7274362540385775),\n",
       " ('streets', 0.726669872598589),\n",
       " ('henry', 0.7264219694448174),\n",
       " ('portrays', 0.7259370033829363),\n",
       " ('bears', 0.7252354951114458),\n",
       " ('china', 0.7248958788745256),\n",
       " ('anger', 0.7243997240640498),\n",
       " ('society', 0.7243301079966333),\n",
       " ('available', 0.7241574173025055),\n",
       " ('best', 0.7234703406044631),\n",
       " ('bugs', 0.7227059828014898),\n",
       " ('magic', 0.718789611173283),\n",
       " ('delivers', 0.7184649885442351),\n",
       " ('verhoeven', 0.7184649885442351),\n",
       " ('jim', 0.7178397931503168),\n",
       " ('donald', 0.7166776779701394),\n",
       " ('endearing', 0.714653385780909),\n",
       " ('relationships', 0.713937950229019),\n",
       " ('greatly', 0.7125652664170469),\n",
       " ('charlie', 0.7102416139192453),\n",
       " ('brad', 0.7102416139192453),\n",
       " ('simon', 0.7096764825111558),\n",
       " ('effectively', 0.7091475219063864),\n",
       " ('march', 0.7077459799810979),\n",
       " ('atmosphere', 0.7074477307021416),\n",
       " ('influence', 0.7073318155519017),\n",
       " ('genius', 0.706392407309966),\n",
       " ('emotionally', 0.7055697005585024),\n",
       " ('ken', 0.7052685410922901),\n",
       " ('identity', 0.7048432203231365),\n",
       " ('sophisticated', 0.7047080029610213),\n",
       " ('dan', 0.7045758763835681),\n",
       " ('andrew', 0.7032995520239632),\n",
       " ('india', 0.7014459833746404),\n",
       " ('roy', 0.6997045811061043),\n",
       " ('surprisingly', 0.6995780708902356),\n",
       " ('sky', 0.6978091936657567),\n",
       " ('romantic', 0.6966498111111474),\n",
       " ('match', 0.6956692499926552),\n",
       " ('meets', 0.6931471805599453),\n",
       " ('cowboy', 0.6931471805599453),\n",
       " ('wave', 0.6931471805599453),\n",
       " ('bitter', 0.6931471805599453),\n",
       " ('patient', 0.6931471805599453),\n",
       " ('stylish', 0.6931471805599453),\n",
       " ('britain', 0.6931471805599453),\n",
       " ('affected', 0.6931471805599453),\n",
       " ('beatty', 0.6931471805599453),\n",
       " ('love', 0.6919853354193732),\n",
       " ('paul', 0.6898082792944307),\n",
       " ('andy', 0.688463331247519),\n",
       " ('performance', 0.6879738632797247),\n",
       " ('patrick', 0.6864581924091486),\n",
       " ('unlike', 0.6854646843879291),\n",
       " ('brooks', 0.6843365508777904),\n",
       " ('refuses', 0.6834852696482084),\n",
       " ('award', 0.6824518914431974),\n",
       " ('complaint', 0.6824518914431974),\n",
       " ('ride', 0.6822971645358795),\n",
       " ('dawson', 0.6817184847363226),\n",
       " ('luke', 0.6815863581588694),\n",
       " ('wells', 0.680877087968131),\n",
       " ('france', 0.6804081547825156),\n",
       " ('sports', 0.6800750989925926),\n",
       " ('handsome', 0.6800750989925926),\n",
       " ('directs', 0.6787584431078457),\n",
       " ('rebel', 0.6787584431078457),\n",
       " ('greater', 0.6760527472006452),\n",
       " ('dreams', 0.6759941013336959),\n",
       " ('effective', 0.6756540231124281),\n",
       " ('interpretation', 0.6747980418917487),\n",
       " ('works', 0.6744550475477928),\n",
       " ('brando', 0.6744550475477928),\n",
       " ('noble', 0.6737290947028437),\n",
       " ('paced', 0.6731465138532757),\n",
       " ('le', 0.6706743247078867),\n",
       " ('master', 0.6701576623352465),\n",
       " ('h', 0.6696166831497512),\n",
       " ('rings', 0.6690496289808848),\n",
       " ('easy', 0.6689599549459415),\n",
       " ('city', 0.6682082322126932),\n",
       " ('sunshine', 0.6678293725756554),\n",
       " ('succeeds', 0.666478933477784),\n",
       " ('relations', 0.664159643686693),\n",
       " ('england', 0.663876798259832),\n",
       " ('glimpse', 0.6632942174102642),\n",
       " ('aired', 0.6626879730752367),\n",
       " ('sees', 0.6626316366339948),\n",
       " ('both', 0.66248336767383),\n",
       " ('definitely', 0.6619978948389881),\n",
       " ('imaginative', 0.661398482245365),\n",
       " ('appreciate', 0.6608389373272875),\n",
       " ('tricks', 0.6607119048067914),\n",
       " ('striking', 0.6607119048067914),\n",
       " ('carefully', 0.6599949732430448),\n",
       " ('complicated', 0.6598107602923535),\n",
       " ('perspective', 0.6596244885213017),\n",
       " ('trilogy', 0.6587795370557376),\n",
       " ('future', 0.6583466514105283),\n",
       " ('lion', 0.6574290979578661),\n",
       " ('douglas', 0.6554068525770982),\n",
       " ('victor', 0.6554068525770982),\n",
       " ('inspired', 0.6545985104427103),\n",
       " ('marriage', 0.653926467406664),\n",
       " ('demands', 0.653926467406664),\n",
       " ('father', 0.6517232167219466),\n",
       " ('page', 0.6512362849443085),\n",
       " ('instant', 0.6505875661411494),\n",
       " ('era', 0.6495567444850836),\n",
       " ('ruthless', 0.6493445579015524),\n",
       " ('saga', 0.6493445579015524),\n",
       " ('joan', 0.6489139255831198),\n",
       " ('joseph', 0.6484112867185539),\n",
       " ('workers', 0.6482966143945935),\n",
       " ('fantasy', 0.6472675748092517),\n",
       " ('distant', 0.6455191315706907),\n",
       " ('accomplished', 0.6455191315706907),\n",
       " ('manhattan', 0.6443570163905132),\n",
       " ('personal', 0.6435502394205732),\n",
       " ('meeting', 0.6431367599852839),\n",
       " ('individual', 0.6431367599852839),\n",
       " ('pushing', 0.6431367599852839),\n",
       " ('pleasant', 0.6425034477411904),\n",
       " ('brave', 0.6418538861723947),\n",
       " ('william', 0.6408313911957847),\n",
       " ('hudson', 0.6407791950426294),\n",
       " ('friendly', 0.6394944670676251),\n",
       " ('eccentric', 0.6390799592896695),\n",
       " ('awards', 0.6387531084941465),\n",
       " ('jack', 0.6383830951499704),\n",
       " ('seeking', 0.6380874033769178),\n",
       " ('divorce', 0.6375773294051346),\n",
       " ('colonel', 0.6375773294051346),\n",
       " ('jane', 0.6344395797331673),\n",
       " ('keeping', 0.6341488397979895),\n",
       " ('gives', 0.6338356815949788),\n",
       " ('ted', 0.633427945858323),\n",
       " ('animation', 0.632086923798699),\n",
       " ('progress', 0.6317782341836532),\n",
       " ('larger', 0.6312717768418578),\n",
       " ('concert', 0.6312717768418578),\n",
       " ('nation', 0.6296337748376194),\n",
       " ('albeit', 0.6273958029971649),\n",
       " ('adapted', 0.6261364702769852),\n",
       " ('discovers', 0.6254290065049944),\n",
       " ('classic', 0.6250495642805052),\n",
       " ('segment', 0.6233514186244034),\n",
       " ('morgan', 0.6230376143729187),\n",
       " ('mouse', 0.6229429218866968),\n",
       " ('impressive', 0.6221114074431935),\n",
       " ('artist', 0.6216882165778004),\n",
       " ('ultimate', 0.6216882165778004),\n",
       " ('griffith', 0.621173680934856),\n",
       " ('drew', 0.6208265189803192),\n",
       " ('emily', 0.6208265189803192),\n",
       " ('moved', 0.6197197120051281),\n",
       " ('families', 0.6190392084062235),\n",
       " ('profound', 0.6190392084062235),\n",
       " ('innocent', 0.6185121991713645),\n",
       " ('versions', 0.6173091041684409),\n",
       " ('eddie', 0.6169198151720611),\n",
       " ('criticism', 0.6165139545390294),\n",
       " ('nature', 0.6159451465319409),\n",
       " ('recognized', 0.6151856390902335),\n",
       " ('sexuality', 0.6146755651184501),\n",
       " ('contract', 0.6140098600012215),\n",
       " ('brian', 0.6134404379492028),\n",
       " ('remembered', 0.6131044728864089),\n",
       " ('determined', 0.6123858239154869),\n",
       " ('offers', 0.6120793574711635),\n",
       " ('pleasure', 0.611957025829932),\n",
       " ('washington', 0.6118015411059929),\n",
       " ('images', 0.6115973135958376),\n",
       " ('games', 0.6106709587357068),\n",
       " ('academy', 0.6087298387473621),\n",
       " ('fashioned', 0.6079893722196384),\n",
       " ('melodrama', 0.6074917359814515),\n",
       " ('rough', 0.6061358035703155),\n",
       " ('charismatic', 0.6061358035703155),\n",
       " ('peoples', 0.6061358035703155),\n",
       " ('dealing', 0.6051784076139881),\n",
       " ('fine', 0.604969622680133),\n",
       " ('tap', 0.6039160468320027),\n",
       " ('trio', 0.6015799870344548),\n",
       " ('russell', 0.6012096852342597),\n",
       " ('figures', 0.6007738604289301),\n",
       " ('ward', 0.6000567574939334),\n",
       " ('shine', 0.5991182309116689),\n",
       " ('brady', 0.5991182309116689),\n",
       " ('job', 0.5984556212516866),\n",
       " ('satisfied', 0.5965203448708737),\n",
       " ('river', 0.5963796286249509),\n",
       " ('brown', 0.595773016534769),\n",
       " ('believable', 0.595660721333025),\n",
       " ('always', 0.5947071077466928),\n",
       " ('bound', 0.5947071077466928),\n",
       " ('hall', 0.5933967777928858),\n",
       " ('cook', 0.5916777203950857),\n",
       " ('claire', 0.5913644862500029),\n",
       " ('broadway', 0.5903376866937243),\n",
       " ('anna', 0.5877866649021191),\n",
       " ('peace', 0.5862840350175841),\n",
       " ('visually', 0.5853943192634992),\n",
       " ('morality', 0.5852582185487603),\n",
       " ('falk', 0.5852582185487603),\n",
       " ('growing', 0.5846665375658754),\n",
       " ('experiences', 0.5831462853456169),\n",
       " ('stood', 0.5831462853456169),\n",
       " ('touch', 0.58122926435596),\n",
       " ('lives', 0.5810976767513224),\n",
       " ('kubrick', 0.5806691971332549),\n",
       " ('timing', 0.5804740180558324),\n",
       " ('expressions', 0.5798184952529422),\n",
       " ('struggles', 0.5798184952529422),\n",
       " ('authentic', 0.5784842722398056),\n",
       " ('helen', 0.5776342934381009),\n",
       " ('pre', 0.5770075306472918),\n",
       " ('quirky', 0.5753641449035618),\n",
       " ('young', 0.5753167234453431),\n",
       " ('inner', 0.5745414381520985),\n",
       " ('mexico', 0.5744308737205633),\n",
       " ('clint', 0.5738004229273791),\n",
       " ('sisters', 0.5728610146854434),\n",
       " ('realism', 0.5722652889994956),\n",
       " ('french', 0.5720692490067093),\n",
       " ('personalities', 0.5720692490067093),\n",
       " ('surprises', 0.5711322299969818),\n",
       " ('adventures', 0.5711322299969818),\n",
       " ('overcome', 0.5697681593994407),\n",
       " ('timothy', 0.5695332245927687),\n",
       " ('tales', 0.5690945318899664),\n",
       " ('war', 0.5684331730278168),\n",
       " ('civil', 0.5679840376059393),\n",
       " ('countries', 0.5673777932709119),\n",
       " ('streep', 0.5671064596645803),\n",
       " ('tradition', 0.5668534552356532),\n",
       " ('oliver', 0.5667332557042867),\n",
       " ('australia', 0.5658077581833438),\n",
       " ('understanding', 0.5653138090500605),\n",
       " ('players', 0.5650952537000482),\n",
       " ('knowing', 0.5648928450362665),\n",
       " ('rogers', 0.5642134971840521),\n",
       " ('suspenseful', 0.5636891133230585),\n",
       " ('variety', 0.5636891133230585),\n",
       " ('true', 0.5628152518081007),\n",
       " ('jr', 0.5622098231124694),\n",
       " ('psychological', 0.5610874585468789),\n",
       " ('sent', 0.5596157879354227),\n",
       " ('grand', 0.5596157879354227),\n",
       " ('branagh', 0.5596157879354227),\n",
       " ('reminiscent', 0.5596157879354227),\n",
       " ('performing', 0.5596157879354227),\n",
       " ('wealth', 0.5596157879354227),\n",
       " ('overwhelming', 0.5596157879354227),\n",
       " ('odds', 0.5596157879354227),\n",
       " ('brothers', 0.5589118104336285),\n",
       " ('howard', 0.5581108967560025),\n",
       " ('david', 0.5569312225647537),\n",
       " ('generation', 0.556287997842748),\n",
       " ('grow', 0.5561253829956542),\n",
       " ('survival', 0.5559460590464603),\n",
       " ('mainstream', 0.5557473111575023),\n",
       " ('dick', 0.5543107357057295),\n",
       " ('charm', 0.5528817557540786),\n",
       " ('kirk', 0.5527898228650229),\n",
       " ('twists', 0.5524472984568102),\n",
       " ('gangster', 0.5520685823000399),\n",
       " ('jeff', 0.5517930622542137),\n",
       " ('family', 0.5511624451006553),\n",
       " ('tend', 0.5505330733611034),\n",
       " ('thanks', 0.5504908801584222),\n",
       " ('world', 0.5474423472343264),\n",
       " ('sutherland', 0.5474353693785516),\n",
       " ('life', 0.5469551443495992),\n",
       " ('disc', 0.5465437063680699),\n",
       " ('bug', 0.5465437063680699),\n",
       " ('tribute', 0.5455111817538808),\n",
       " ('europe', 0.5452270504833231),\n",
       " ('sacrifice', 0.5443015529623801),\n",
       " ('color', 0.5440512713943111),\n",
       " ('superior', 0.5433349023312852),\n",
       " ('york', 0.5431823586653651),\n",
       " ('pulls', 0.5426662296216495),\n",
       " ('jackson', 0.5423242908253617),\n",
       " ('hearts', 0.5423242908253617),\n",
       " ('enjoy', 0.5412428513590611),\n",
       " ('redemption', 0.5405675929647282),\n",
       " ('madness', 0.540384426007535),\n",
       " ('stands', 0.5389965007326869),\n",
       " ('trial', 0.5389965007326869),\n",
       " ('greek', 0.5389965007326869),\n",
       " ('hamilton', 0.5389965007326869),\n",
       " ('each', 0.5388212312554177),\n",
       " ('faithful', 0.5377330766859151),\n",
       " ('received', 0.5372768098531604),\n",
       " ('documentaries', 0.537142932083364),\n",
       " ('jealous', 0.537142932083364),\n",
       " ('different', 0.5370986068246082),\n",
       " ('describes', 0.5368011101692514),\n",
       " ('shorts', 0.5359615970375329),\n",
       " ('brilliance', 0.5355182363563621),\n",
       " ('mountains', 0.5349231753450512),\n",
       " ('share', 0.5340824859302579),\n",
       " ('dealt', 0.5340824859302579),\n",
       " ('providing', 0.5332984796180493),\n",
       " ('explore', 0.5332984796180493),\n",
       " ('series', 0.5325809226575603),\n",
       " ('fellow', 0.5323318289869543),\n",
       " ('loves', 0.5306282510621704),\n",
       " ('revolution', 0.5306282510621704),\n",
       " ('olivier', 0.5306282510621704),\n",
       " ('roman', 0.5306282510621704),\n",
       " ('century', 0.5300278307499267),\n",
       " ('musical', 0.5296687115674706),\n",
       " ('heroic', 0.5292593254548287),\n",
       " ('approach', 0.5280674302004967),\n",
       " ('ironically', 0.5280674302004967),\n",
       " ('temple', 0.5280674302004967),\n",
       " ('moves', 0.5279372642387119),\n",
       " ('gift', 0.5270203096859714),\n",
       " ('julie', 0.5260930958967791),\n",
       " ('tells', 0.52415107836314),\n",
       " ('radio', 0.5239467117286878),\n",
       " ('uncle', 0.5235443961737654),\n",
       " ('union', 0.5232481437645479),\n",
       " ('deep', 0.523095716357805),\n",
       " ('reminds', 0.5215784155422524),\n",
       " ('famous', 0.5211884108015372),\n",
       " ('jazz', 0.5205344378929515),\n",
       " ('dennis', 0.5198754592859086),\n",
       " ('epic', 0.5191938734365074),\n",
       " ('adult', 0.519167695083386),\n",
       " ('shows', 0.519153222203753),\n",
       " ('performed', 0.5191244265806858),\n",
       " ('demons', 0.5191244265806858),\n",
       " ('discovered', 0.5187937934151675),\n",
       " ('eric', 0.5187937934151675),\n",
       " ('youth', 0.5185626062681431),\n",
       " ('human', 0.5185141122498709),\n",
       " ('tarzan', 0.5181382706122772),\n",
       " ('ourselves', 0.5179430915348546),\n",
       " ('wwii', 0.5175824062288704),\n",
       " ('passion', 0.5162164724008671),\n",
       " ('desire', 0.5160749796521344),\n",
       " ('pays', 0.5158131652770298),\n",
       " ('dirty', 0.5155762265245886),\n",
       " ('fox', 0.5155762265245886),\n",
       " ('sympathetic', 0.5154660033224929),\n",
       " ('symbolism', 0.5154660033224929),\n",
       " ('attitude', 0.5153099362133193),\n",
       " ('appearances', 0.5146644000731564),\n",
       " ('jeremy', 0.5146644000731564),\n",
       " ('fun', 0.5143906899304869),\n",
       " ('south', 0.5142097217502312),\n",
       " ('arrives', 0.5140989491109599),\n",
       " ('present', 0.5134196589430373),\n",
       " ('com', 0.5132616785638717),\n",
       " ('smile', 0.5126588048476517),\n",
       " ('alan', 0.5108256237659907),\n",
       " ('ring', 0.5108256237659907),\n",
       " ('visit', 0.5108256237659907),\n",
       " ('fits', 0.5108256237659907),\n",
       " ('provided', 0.5108256237659907),\n",
       " ('carter', 0.5108256237659907),\n",
       " ('aging', 0.5108256237659907),\n",
       " ('countryside', 0.5108256237659907),\n",
       " ('begins', 0.5101565036339665),\n",
       " ('success', 0.5090057870490047),\n",
       " ('japan', 0.5090057870490047),\n",
       " ('accurate', 0.5089547158301789),\n",
       " ('proud', 0.5080047474243493),\n",
       " ('daily', 0.5075946031845443),\n",
       " ('karloff', 0.5072478024181067),\n",
       " ('atmospheric', 0.5072478024181067),\n",
       " ('recently', 0.5071491490366821),\n",
       " ('fu', 0.5070449009260847),\n",
       " ('horrors', 0.5065612249795332),\n",
       " ('finding', 0.5063712734166104),\n",
       " ('lust', 0.5059356384717989),\n",
       " ('hitchcock', 0.50574947073413),\n",
       " ('among', 0.5033400495133273),\n",
       " ('viewing', 0.5030213982744091),\n",
       " ('investigation', 0.5026288565618122),\n",
       " ('shining', 0.5026288565618122),\n",
       " ('duo', 0.5020919437972361),\n",
       " ('cameron', 0.5020919437972361),\n",
       " ('finds', 0.501283031005398),\n",
       " ('contemporary', 0.5007752879124892),\n",
       " ('genuine', 0.500462836730444),\n",
       " ('frightening', 0.49995595152908684),\n",
       " ('plays', 0.49975983848890226),\n",
       " ('age', 0.49941323171424595),\n",
       " ('position', 0.4989911661189878),\n",
       " ('continues', 0.4986303506721724),\n",
       " ('roles', 0.4983971655075218),\n",
       " ('james', 0.498372162694704),\n",
       " ('individuals', 0.4982468415591305),\n",
       " ('brought', 0.49783842823917956),\n",
       " ('hilarious', 0.4971455198619106),\n",
       " ('brutal', 0.49681488669639234),\n",
       " ('appropriate', 0.49643688631389105),\n",
       " ('dance', 0.4958199831481205),\n",
       " ('league', 0.49578774640145024),\n",
       " ('helping', 0.49578774640145024),\n",
       " ('answers', 0.49578774640145024),\n",
       " ('stunts', 0.49561620510246196),\n",
       " ('traveling', 0.4953214372300254),\n",
       " ('thoroughly', 0.49414593456733524),\n",
       " ('depicted', 0.4931706885272699),\n",
       " ('combination', 0.49247648509779424),\n",
       " ('honor', 0.49247648509779424),\n",
       " ('differences', 0.49247648509779424),\n",
       " ('fully', 0.4921334907538381),\n",
       " ('tracy', 0.49159426183810306),\n",
       " ('battles', 0.4914075379088891),\n",
       " ('possibility', 0.4911205526866582),\n",
       " ('romance', 0.4901589869574316),\n",
       " ('initially', 0.49002249613622745),\n",
       " ('happy', 0.4898997500608791),\n",
       " ('crime', 0.48977221456815834),\n",
       " ('singing', 0.4893852925281213),\n",
       " ('especially', 0.48901267837860624),\n",
       " ('shakespeare', 0.4875479388966451),\n",
       " ('hugh', 0.4872951263557966),\n",
       " ('detail', 0.4860948425082735),\n",
       " ('julia', 0.4855078157817008),\n",
       " ('san', 0.4855078157817008),\n",
       " ('guide', 0.4855078157817008),\n",
       " ('desperation', 0.4855078157817008),\n",
       " ('companion', 0.4855078157817008),\n",
       " ('strongly', 0.48460242866688824),\n",
       " ('necessary', 0.48302334245403883),\n",
       " ('humanity', 0.48265474679929443),\n",
       " ('drama', 0.48221998493060503),\n",
       " ('nonetheless', 0.4818380868927384),\n",
       " ('intrigue', 0.4818380868927384),\n",
       " ('warming', 0.4818380868927384),\n",
       " ('cuba', 0.4818380868927384),\n",
       " ('planned', 0.4795730802618863),\n",
       " ('pictures', 0.4792993701192168),\n",
       " ('broadcast', 0.4784902431230542),\n",
       " ('nine', 0.47803580094299974),\n",
       " ('settings', 0.47743860773325364),\n",
       " ('history', 0.4773296693378085),\n",
       " ('ordinary', 0.4772588001269074),\n",
       " ('trade', 0.47692407209030935),\n",
       " ('official', 0.4760826753221178),\n",
       " ('primary', 0.4760826753221178),\n",
       " ('episode', 0.4752962026115043),\n",
       " ('role', 0.47520268270188676),\n",
       " ('spirit', 0.4747769079983932),\n",
       " ('grey', 0.4740936144972607),\n",
       " ('ways', 0.47323464982718205),\n",
       " ('cup', 0.472604410945793),\n",
       " ('piano', 0.472604410945793),\n",
       " ('familiar', 0.4724161756511195),\n",
       " ('sinister', 0.4719857904497268),\n",
       " ('reveal', 0.47171449364936496),\n",
       " ('max', 0.4715085204251558),\n",
       " ('dated', 0.4712164856709448),\n",
       " ('losing', 0.47000362924573563),\n",
       " ('discovery', 0.47000362924573563),\n",
       " ('vicious', 0.47000362924573563),\n",
       " ('genuinely', 0.46871413841586385),\n",
       " ('hatred', 0.46734051182625186),\n",
       " ('mistaken', 0.4670230011075978),\n",
       " ('dream', 0.46608972992459924),\n",
       " ('challenge', 0.46608972992459924),\n",
       " ('crisis', 0.46575733836428446),\n",
       " ('photographed', 0.4648885285789651),\n",
       " ('critics', 0.4643056081310978),\n",
       " ('bird', 0.4643056081310978),\n",
       " ('machines', 0.4643056081310978),\n",
       " ('born', 0.4641138351896721),\n",
       " ('detective', 0.4636633473511525),\n",
       " ('higher', 0.46328467899699055),\n",
       " ('remains', 0.46262352194811296),\n",
       " ('inevitable', 0.46262352194811296),\n",
       " ('soviet', 0.4618180446592961),\n",
       " ('ryan', 0.461345566502621),\n",
       " ('african', 0.46112595521371813),\n",
       " ('smaller', 0.46081520319132935),\n",
       " ('techniques', 0.46052488529119184),\n",
       " ('information', 0.4603417183339986),\n",
       " ('deserved', 0.45999798712841444),\n",
       " ('lynch', 0.45953232937844013),\n",
       " ('spielberg', 0.45953232937844013),\n",
       " ('cynical', 0.45953232937844013),\n",
       " ('tour', 0.45953232937844013),\n",
       " ('francisco', 0.45953232937844013),\n",
       " ('struggle', 0.45911782160048453),\n",
       " ('language', 0.4590212125771265),\n",
       " ('visual', 0.4582351440882285),\n",
       " ('warner', 0.45724137763188427),\n",
       " ('social', 0.45720078250735313),\n",
       " ('reality', 0.45719346885019546),\n",
       " ('hidden', 0.4567584024957149),\n",
       " ('breaking', 0.4560173872709956),\n",
       " ('sometimes', 0.45563021171182794),\n",
       " ('modern', 0.45500247579345005),\n",
       " ('surfing', 0.4542552722775964),\n",
       " ('popular', 0.45410691533051023),\n",
       " ('surprised', 0.4534409399850382),\n",
       " ('follows', 0.4524536175440835),\n",
       " ('keeps', 0.45234869400701483),\n",
       " ('john', 0.4520909494482197),\n",
       " ('mixed', 0.4519851237430572),\n",
       " ('defeat', 0.4519851237430572),\n",
       " ('justice', 0.4514272436728002),\n",
       " ('treasure', 0.45083371313801535),\n",
       " ('presents', 0.44973793178615257),\n",
       " ('years', 0.4491919703210497),\n",
       " ('chief', 0.4489502200479032),\n",
       " ('shadows', 0.44802472252696035),\n",
       " ('closely', 0.4470141110210369),\n",
       " ('segments', 0.4470141110210369),\n",
       " ('lose', 0.446583355037637),\n",
       " ('caine', 0.44628710262841953),\n",
       " ('caught', 0.4461027538399907),\n",
       " ('hamlet', 0.44558510189758965),\n",
       " ('chinese', 0.4450742462032102),\n",
       " ('welcome', 0.4443805243578379),\n",
       " ('birth', 0.4436863209283622),\n",
       " ('represents', 0.44320543609101143),\n",
       " ('puts', 0.4427910657208508),\n",
       " ('visuals', 0.44183275227903923),\n",
       " ('fame', 0.44183275227903923),\n",
       " ('closer', 0.44183275227903923),\n",
       " ('web', 0.44183275227903923),\n",
       " ('criminal', 0.4412745608048752),\n",
       " ('minor', 0.4409224199448939),\n",
       " ('jon', 0.44086703515908027),\n",
       " ('liked', 0.4407499151402072),\n",
       " ('restaurant', 0.44031183943833246),\n",
       " ('de', 0.4398327516123722),\n",
       " ('flaws', 0.4398327516123722),\n",
       " ('searching', 0.4393666597838457),\n",
       " ('rap', 0.4389130421757044),\n",
       " ('light', 0.4388443301819989),\n",
       " ('elizabeth', 0.43872232986464677),\n",
       " ('marry', 0.4386173154250649),\n",
       " ('learned', 0.4382549309311553),\n",
       " ('controversial', 0.4382549309311553),\n",
       " ('oz', 0.4382549309311553),\n",
       " ('slowly', 0.4378566038993998),\n",
       " ('comedic', 0.43721380642274466),\n",
       " ('wayne', 0.43721380642274466),\n",
       " ('thrilling', 0.43721380642274466),\n",
       " ('bridge', 0.43721380642274466),\n",
       " ('married', 0.4365850168219689),\n",
       " ('nazi', 0.4361020775700542),\n",
       " ('murder', 0.4353180712578455),\n",
       " ('physical', 0.4353180712578455),\n",
       " ('johnny', 0.43483971678806865),\n",
       " ('michelle', 0.4344526449814167),\n",
       " ('wallace', 0.4340384805522204),\n",
       " ('comedies', 0.43395706390247063),\n",
       " ('silent', 0.43395706390247063),\n",
       " ('played', 0.43387244114515305),\n",
       " ('international', 0.43363598507486073),\n",
       " ('vision', 0.4328640822962789),\n",
       " ('intelligent', 0.431967048853671),\n",
       " ('shop', 0.43078291609245434),\n",
       " ('also', 0.4303672020976917),\n",
       " ('levels', 0.4302451371066513),\n",
       " ('miss', 0.4300642671215322),\n",
       " ('movement', 0.4295626596872249),\n",
       " ...]"
      ]
     },
     "execution_count": 64,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# words most frequently seen in a review with a \"POSITIVE\" label\n",
    "pos_neg_ratios.most_common()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 66,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "[('boll', -4.969813299576001),\n",
       " ('uwe', -4.624972813284271),\n",
       " ('seagal', -3.644143560272545),\n",
       " ('unwatchable', -3.258096538021482),\n",
       " ('stinker', -3.2088254890146994),\n",
       " ('mst', -2.9502698994772336),\n",
       " ('incoherent', -2.9368917735310576),\n",
       " ('unfunny', -2.6922395950755678),\n",
       " ('waste', -2.6193845640165536),\n",
       " ('blah', -2.5704288232261625),\n",
       " ('horrid', -2.4849066497880004),\n",
       " ('pointless', -2.4553061800117097),\n",
       " ('atrocious', -2.4259083090260445),\n",
       " ('redeeming', -2.3682390632154826),\n",
       " ('prom', -2.3608540011180215),\n",
       " ('drivel', -2.3470368555648795),\n",
       " ('lousy', -2.307572634505085),\n",
       " ('worst', -2.286987896180378),\n",
       " ('laughable', -2.264363880173848),\n",
       " ('awful', -2.227194247027435),\n",
       " ('poorly', -2.2207550747464135),\n",
       " ('wasting', -2.204604684633842),\n",
       " ('remotely', -2.1972245773362196),\n",
       " ('existent', -2.0794415416798357),\n",
       " ('boredom', -1.995100393246085),\n",
       " ('miserably', -1.9924301646902063),\n",
       " ('sucks', -1.987068221548821),\n",
       " ('uninspired', -1.9832976811269336),\n",
       " ('lame', -1.981767458946166),\n",
       " ('insult', -1.978345424808467)]"
      ]
     },
     "execution_count": 66,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# words most frequently seen in a review with a \"NEGATIVE\" label\n",
    "list(reversed(pos_neg_ratios.most_common()))[0:30]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 67,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "\n",
       "    <div class=\"bk-root\">\n",
       "        <a href=\"https://bokeh.org\" target=\"_blank\" class=\"bk-logo bk-logo-small bk-logo-notebook\"></a>\n",
       "        <span id=\"1001\">Loading BokehJS ...</span>\n",
       "    </div>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "application/javascript": [
       "\n",
       "(function(root) {\n",
       "  function now() {\n",
       "    return new Date();\n",
       "  }\n",
       "\n",
       "  var force = true;\n",
       "\n",
       "  if (typeof root._bokeh_onload_callbacks === \"undefined\" || force === true) {\n",
       "    root._bokeh_onload_callbacks = [];\n",
       "    root._bokeh_is_loading = undefined;\n",
       "  }\n",
       "\n",
       "  var JS_MIME_TYPE = 'application/javascript';\n",
       "  var HTML_MIME_TYPE = 'text/html';\n",
       "  var EXEC_MIME_TYPE = 'application/vnd.bokehjs_exec.v0+json';\n",
       "  var CLASS_NAME = 'output_bokeh rendered_html';\n",
       "\n",
       "  /**\n",
       "   * Render data to the DOM node\n",
       "   */\n",
       "  function render(props, node) {\n",
       "    var script = document.createElement(\"script\");\n",
       "    node.appendChild(script);\n",
       "  }\n",
       "\n",
       "  /**\n",
       "   * Handle when an output is cleared or removed\n",
       "   */\n",
       "  function handleClearOutput(event, handle) {\n",
       "    var cell = handle.cell;\n",
       "\n",
       "    var id = cell.output_area._bokeh_element_id;\n",
       "    var server_id = cell.output_area._bokeh_server_id;\n",
       "    // Clean up Bokeh references\n",
       "    if (id != null && id in Bokeh.index) {\n",
       "      Bokeh.index[id].model.document.clear();\n",
       "      delete Bokeh.index[id];\n",
       "    }\n",
       "\n",
       "    if (server_id !== undefined) {\n",
       "      // Clean up Bokeh references\n",
       "      var cmd = \"from bokeh.io.state import curstate; print(curstate().uuid_to_server['\" + server_id + \"'].get_sessions()[0].document.roots[0]._id)\";\n",
       "      cell.notebook.kernel.execute(cmd, {\n",
       "        iopub: {\n",
       "          output: function(msg) {\n",
       "            var id = msg.content.text.trim();\n",
       "            if (id in Bokeh.index) {\n",
       "              Bokeh.index[id].model.document.clear();\n",
       "              delete Bokeh.index[id];\n",
       "            }\n",
       "          }\n",
       "        }\n",
       "      });\n",
       "      // Destroy server and session\n",
       "      var cmd = \"import bokeh.io.notebook as ion; ion.destroy_server('\" + server_id + \"')\";\n",
       "      cell.notebook.kernel.execute(cmd);\n",
       "    }\n",
       "  }\n",
       "\n",
       "  /**\n",
       "   * Handle when a new output is added\n",
       "   */\n",
       "  function handleAddOutput(event, handle) {\n",
       "    var output_area = handle.output_area;\n",
       "    var output = handle.output;\n",
       "\n",
       "    // limit handleAddOutput to display_data with EXEC_MIME_TYPE content only\n",
       "    if ((output.output_type != \"display_data\") || (!output.data.hasOwnProperty(EXEC_MIME_TYPE))) {\n",
       "      return\n",
       "    }\n",
       "\n",
       "    var toinsert = output_area.element.find(\".\" + CLASS_NAME.split(' ')[0]);\n",
       "\n",
       "    if (output.metadata[EXEC_MIME_TYPE][\"id\"] !== undefined) {\n",
       "      toinsert[toinsert.length - 1].firstChild.textContent = output.data[JS_MIME_TYPE];\n",
       "      // store reference to embed id on output_area\n",
       "      output_area._bokeh_element_id = output.metadata[EXEC_MIME_TYPE][\"id\"];\n",
       "    }\n",
       "    if (output.metadata[EXEC_MIME_TYPE][\"server_id\"] !== undefined) {\n",
       "      var bk_div = document.createElement(\"div\");\n",
       "      bk_div.innerHTML = output.data[HTML_MIME_TYPE];\n",
       "      var script_attrs = bk_div.children[0].attributes;\n",
       "      for (var i = 0; i < script_attrs.length; i++) {\n",
       "        toinsert[toinsert.length - 1].firstChild.setAttribute(script_attrs[i].name, script_attrs[i].value);\n",
       "      }\n",
       "      // store reference to server id on output_area\n",
       "      output_area._bokeh_server_id = output.metadata[EXEC_MIME_TYPE][\"server_id\"];\n",
       "    }\n",
       "  }\n",
       "\n",
       "  function register_renderer(events, OutputArea) {\n",
       "\n",
       "    function append_mime(data, metadata, element) {\n",
       "      // create a DOM node to render to\n",
       "      var toinsert = this.create_output_subarea(\n",
       "        metadata,\n",
       "        CLASS_NAME,\n",
       "        EXEC_MIME_TYPE\n",
       "      );\n",
       "      this.keyboard_manager.register_events(toinsert);\n",
       "      // Render to node\n",
       "      var props = {data: data, metadata: metadata[EXEC_MIME_TYPE]};\n",
       "      render(props, toinsert[toinsert.length - 1]);\n",
       "      element.append(toinsert);\n",
       "      return toinsert\n",
       "    }\n",
       "\n",
       "    /* Handle when an output is cleared or removed */\n",
       "    events.on('clear_output.CodeCell', handleClearOutput);\n",
       "    events.on('delete.Cell', handleClearOutput);\n",
       "\n",
       "    /* Handle when a new output is added */\n",
       "    events.on('output_added.OutputArea', handleAddOutput);\n",
       "\n",
       "    /**\n",
       "     * Register the mime type and append_mime function with output_area\n",
       "     */\n",
       "    OutputArea.prototype.register_mime_type(EXEC_MIME_TYPE, append_mime, {\n",
       "      /* Is output safe? */\n",
       "      safe: true,\n",
       "      /* Index of renderer in `output_area.display_order` */\n",
       "      index: 0\n",
       "    });\n",
       "  }\n",
       "\n",
       "  // register the mime type if in Jupyter Notebook environment and previously unregistered\n",
       "  if (root.Jupyter !== undefined) {\n",
       "    var events = require('base/js/events');\n",
       "    var OutputArea = require('notebook/js/outputarea').OutputArea;\n",
       "\n",
       "    if (OutputArea.prototype.mime_types().indexOf(EXEC_MIME_TYPE) == -1) {\n",
       "      register_renderer(events, OutputArea);\n",
       "    }\n",
       "  }\n",
       "\n",
       "  \n",
       "  if (typeof (root._bokeh_timeout) === \"undefined\" || force === true) {\n",
       "    root._bokeh_timeout = Date.now() + 5000;\n",
       "    root._bokeh_failed_load = false;\n",
       "  }\n",
       "\n",
       "  var NB_LOAD_WARNING = {'data': {'text/html':\n",
       "     \"<div style='background-color: #fdd'>\\n\"+\n",
       "     \"<p>\\n\"+\n",
       "     \"BokehJS does not appear to have successfully loaded. If loading BokehJS from CDN, this \\n\"+\n",
       "     \"may be due to a slow or bad network connection. Possible fixes:\\n\"+\n",
       "     \"</p>\\n\"+\n",
       "     \"<ul>\\n\"+\n",
       "     \"<li>re-rerun `output_notebook()` to attempt to load from CDN again, or</li>\\n\"+\n",
       "     \"<li>use INLINE resources instead, as so:</li>\\n\"+\n",
       "     \"</ul>\\n\"+\n",
       "     \"<code>\\n\"+\n",
       "     \"from bokeh.resources import INLINE\\n\"+\n",
       "     \"output_notebook(resources=INLINE)\\n\"+\n",
       "     \"</code>\\n\"+\n",
       "     \"</div>\"}};\n",
       "\n",
       "  function display_loaded() {\n",
       "    var el = document.getElementById(\"1001\");\n",
       "    if (el != null) {\n",
       "      el.textContent = \"BokehJS is loading...\";\n",
       "    }\n",
       "    if (root.Bokeh !== undefined) {\n",
       "      if (el != null) {\n",
       "        el.textContent = \"BokehJS \" + root.Bokeh.version + \" successfully loaded.\";\n",
       "      }\n",
       "    } else if (Date.now() < root._bokeh_timeout) {\n",
       "      setTimeout(display_loaded, 100)\n",
       "    }\n",
       "  }\n",
       "\n",
       "\n",
       "  function run_callbacks() {\n",
       "    try {\n",
       "      root._bokeh_onload_callbacks.forEach(function(callback) {\n",
       "        if (callback != null)\n",
       "          callback();\n",
       "      });\n",
       "    } finally {\n",
       "      delete root._bokeh_onload_callbacks\n",
       "    }\n",
       "    console.debug(\"Bokeh: all callbacks have finished\");\n",
       "  }\n",
       "\n",
       "  function load_libs(css_urls, js_urls, callback) {\n",
       "    if (css_urls == null) css_urls = [];\n",
       "    if (js_urls == null) js_urls = [];\n",
       "\n",
       "    root._bokeh_onload_callbacks.push(callback);\n",
       "    if (root._bokeh_is_loading > 0) {\n",
       "      console.debug(\"Bokeh: BokehJS is being loaded, scheduling callback at\", now());\n",
       "      return null;\n",
       "    }\n",
       "    if (js_urls == null || js_urls.length === 0) {\n",
       "      run_callbacks();\n",
       "      return null;\n",
       "    }\n",
       "    console.debug(\"Bokeh: BokehJS not loaded, scheduling load and callback at\", now());\n",
       "    root._bokeh_is_loading = css_urls.length + js_urls.length;\n",
       "\n",
       "    function on_load() {\n",
       "      root._bokeh_is_loading--;\n",
       "      if (root._bokeh_is_loading === 0) {\n",
       "        console.debug(\"Bokeh: all BokehJS libraries/stylesheets loaded\");\n",
       "        run_callbacks()\n",
       "      }\n",
       "    }\n",
       "\n",
       "    function on_error() {\n",
       "      console.error(\"failed to load \" + url);\n",
       "    }\n",
       "\n",
       "    for (var i = 0; i < css_urls.length; i++) {\n",
       "      var url = css_urls[i];\n",
       "      const element = document.createElement(\"link\");\n",
       "      element.onload = on_load;\n",
       "      element.onerror = on_error;\n",
       "      element.rel = \"stylesheet\";\n",
       "      element.type = \"text/css\";\n",
       "      element.href = url;\n",
       "      console.debug(\"Bokeh: injecting link tag for BokehJS stylesheet: \", url);\n",
       "      document.body.appendChild(element);\n",
       "    }\n",
       "\n",
       "    for (var i = 0; i < js_urls.length; i++) {\n",
       "      var url = js_urls[i];\n",
       "      var element = document.createElement('script');\n",
       "      element.onload = on_load;\n",
       "      element.onerror = on_error;\n",
       "      element.async = false;\n",
       "      element.src = url;\n",
       "      console.debug(\"Bokeh: injecting script tag for BokehJS library: \", url);\n",
       "      document.head.appendChild(element);\n",
       "    }\n",
       "  };var element = document.getElementById(\"1001\");\n",
       "  if (element == null) {\n",
       "    console.error(\"Bokeh: ERROR: autoload.js configured with elementid '1001' but no matching script tag was found. \")\n",
       "    return false;\n",
       "  }\n",
       "\n",
       "  function inject_raw_css(css) {\n",
       "    const element = document.createElement(\"style\");\n",
       "    element.appendChild(document.createTextNode(css));\n",
       "    document.body.appendChild(element);\n",
       "  }\n",
       "\n",
       "  \n",
       "  var js_urls = [\"https://cdn.pydata.org/bokeh/release/bokeh-1.4.0.min.js\", \"https://cdn.pydata.org/bokeh/release/bokeh-widgets-1.4.0.min.js\", \"https://cdn.pydata.org/bokeh/release/bokeh-tables-1.4.0.min.js\", \"https://cdn.pydata.org/bokeh/release/bokeh-gl-1.4.0.min.js\"];\n",
       "  var css_urls = [];\n",
       "  \n",
       "\n",
       "  var inline_js = [\n",
       "    function(Bokeh) {\n",
       "      Bokeh.set_log_level(\"info\");\n",
       "    },\n",
       "    function(Bokeh) {\n",
       "    \n",
       "    \n",
       "    }\n",
       "  ];\n",
       "\n",
       "  function run_inline_js() {\n",
       "    \n",
       "    if (root.Bokeh !== undefined || force === true) {\n",
       "      \n",
       "    for (var i = 0; i < inline_js.length; i++) {\n",
       "      inline_js[i].call(root, root.Bokeh);\n",
       "    }\n",
       "    if (force === true) {\n",
       "        display_loaded();\n",
       "      }} else if (Date.now() < root._bokeh_timeout) {\n",
       "      setTimeout(run_inline_js, 100);\n",
       "    } else if (!root._bokeh_failed_load) {\n",
       "      console.log(\"Bokeh: BokehJS failed to load within specified timeout.\");\n",
       "      root._bokeh_failed_load = true;\n",
       "    } else if (force !== true) {\n",
       "      var cell = $(document.getElementById(\"1001\")).parents('.cell').data().cell;\n",
       "      cell.output_area.append_execute_result(NB_LOAD_WARNING)\n",
       "    }\n",
       "\n",
       "  }\n",
       "\n",
       "  if (root._bokeh_is_loading === 0) {\n",
       "    console.debug(\"Bokeh: BokehJS loaded, going straight to plotting\");\n",
       "    run_inline_js();\n",
       "  } else {\n",
       "    load_libs(css_urls, js_urls, function() {\n",
       "      console.debug(\"Bokeh: BokehJS plotting callback run at\", now());\n",
       "      run_inline_js();\n",
       "    });\n",
       "  }\n",
       "}(window));"
      ],
      "application/vnd.bokehjs_load.v0+json": "\n(function(root) {\n  function now() {\n    return new Date();\n  }\n\n  var force = true;\n\n  if (typeof root._bokeh_onload_callbacks === \"undefined\" || force === true) {\n    root._bokeh_onload_callbacks = [];\n    root._bokeh_is_loading = undefined;\n  }\n\n  \n\n  \n  if (typeof (root._bokeh_timeout) === \"undefined\" || force === true) {\n    root._bokeh_timeout = Date.now() + 5000;\n    root._bokeh_failed_load = false;\n  }\n\n  var NB_LOAD_WARNING = {'data': {'text/html':\n     \"<div style='background-color: #fdd'>\\n\"+\n     \"<p>\\n\"+\n     \"BokehJS does not appear to have successfully loaded. If loading BokehJS from CDN, this \\n\"+\n     \"may be due to a slow or bad network connection. Possible fixes:\\n\"+\n     \"</p>\\n\"+\n     \"<ul>\\n\"+\n     \"<li>re-rerun `output_notebook()` to attempt to load from CDN again, or</li>\\n\"+\n     \"<li>use INLINE resources instead, as so:</li>\\n\"+\n     \"</ul>\\n\"+\n     \"<code>\\n\"+\n     \"from bokeh.resources import INLINE\\n\"+\n     \"output_notebook(resources=INLINE)\\n\"+\n     \"</code>\\n\"+\n     \"</div>\"}};\n\n  function display_loaded() {\n    var el = document.getElementById(\"1001\");\n    if (el != null) {\n      el.textContent = \"BokehJS is loading...\";\n    }\n    if (root.Bokeh !== undefined) {\n      if (el != null) {\n        el.textContent = \"BokehJS \" + root.Bokeh.version + \" successfully loaded.\";\n      }\n    } else if (Date.now() < root._bokeh_timeout) {\n      setTimeout(display_loaded, 100)\n    }\n  }\n\n\n  function run_callbacks() {\n    try {\n      root._bokeh_onload_callbacks.forEach(function(callback) {\n        if (callback != null)\n          callback();\n      });\n    } finally {\n      delete root._bokeh_onload_callbacks\n    }\n    console.debug(\"Bokeh: all callbacks have finished\");\n  }\n\n  function load_libs(css_urls, js_urls, callback) {\n    if (css_urls == null) css_urls = [];\n    if (js_urls == null) js_urls = [];\n\n    root._bokeh_onload_callbacks.push(callback);\n    if (root._bokeh_is_loading > 0) {\n      console.debug(\"Bokeh: BokehJS is being loaded, scheduling callback at\", now());\n      return null;\n    }\n    if (js_urls == null || js_urls.length === 0) {\n      run_callbacks();\n      return null;\n    }\n    console.debug(\"Bokeh: BokehJS not loaded, scheduling load and callback at\", now());\n    root._bokeh_is_loading = css_urls.length + js_urls.length;\n\n    function on_load() {\n      root._bokeh_is_loading--;\n      if (root._bokeh_is_loading === 0) {\n        console.debug(\"Bokeh: all BokehJS libraries/stylesheets loaded\");\n        run_callbacks()\n      }\n    }\n\n    function on_error() {\n      console.error(\"failed to load \" + url);\n    }\n\n    for (var i = 0; i < css_urls.length; i++) {\n      var url = css_urls[i];\n      const element = document.createElement(\"link\");\n      element.onload = on_load;\n      element.onerror = on_error;\n      element.rel = \"stylesheet\";\n      element.type = \"text/css\";\n      element.href = url;\n      console.debug(\"Bokeh: injecting link tag for BokehJS stylesheet: \", url);\n      document.body.appendChild(element);\n    }\n\n    for (var i = 0; i < js_urls.length; i++) {\n      var url = js_urls[i];\n      var element = document.createElement('script');\n      element.onload = on_load;\n      element.onerror = on_error;\n      element.async = false;\n      element.src = url;\n      console.debug(\"Bokeh: injecting script tag for BokehJS library: \", url);\n      document.head.appendChild(element);\n    }\n  };var element = document.getElementById(\"1001\");\n  if (element == null) {\n    console.error(\"Bokeh: ERROR: autoload.js configured with elementid '1001' but no matching script tag was found. \")\n    return false;\n  }\n\n  function inject_raw_css(css) {\n    const element = document.createElement(\"style\");\n    element.appendChild(document.createTextNode(css));\n    document.body.appendChild(element);\n  }\n\n  \n  var js_urls = [\"https://cdn.pydata.org/bokeh/release/bokeh-1.4.0.min.js\", \"https://cdn.pydata.org/bokeh/release/bokeh-widgets-1.4.0.min.js\", \"https://cdn.pydata.org/bokeh/release/bokeh-tables-1.4.0.min.js\", \"https://cdn.pydata.org/bokeh/release/bokeh-gl-1.4.0.min.js\"];\n  var css_urls = [];\n  \n\n  var inline_js = [\n    function(Bokeh) {\n      Bokeh.set_log_level(\"info\");\n    },\n    function(Bokeh) {\n    \n    \n    }\n  ];\n\n  function run_inline_js() {\n    \n    if (root.Bokeh !== undefined || force === true) {\n      \n    for (var i = 0; i < inline_js.length; i++) {\n      inline_js[i].call(root, root.Bokeh);\n    }\n    if (force === true) {\n        display_loaded();\n      }} else if (Date.now() < root._bokeh_timeout) {\n      setTimeout(run_inline_js, 100);\n    } else if (!root._bokeh_failed_load) {\n      console.log(\"Bokeh: BokehJS failed to load within specified timeout.\");\n      root._bokeh_failed_load = true;\n    } else if (force !== true) {\n      var cell = $(document.getElementById(\"1001\")).parents('.cell').data().cell;\n      cell.output_area.append_execute_result(NB_LOAD_WARNING)\n    }\n\n  }\n\n  if (root._bokeh_is_loading === 0) {\n    console.debug(\"Bokeh: BokehJS loaded, going straight to plotting\");\n    run_inline_js();\n  } else {\n    load_libs(css_urls, js_urls, function() {\n      console.debug(\"Bokeh: BokehJS plotting callback run at\", now());\n      run_inline_js();\n    });\n  }\n}(window));"
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "from bokeh.models import ColumnDataSource, LabelSet\n",
    "from bokeh.plotting import figure, show, output_file\n",
    "from bokeh.io import output_notebook\n",
    "output_notebook()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 68,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "/anaconda3/lib/python3.7/site-packages/ipykernel_launcher.py:1: DeprecationWarning: The normed argument is ignored when density is provided. In future passing both will result in an error.\n",
      "  \"\"\"Entry point for launching an IPython kernel.\n"
     ]
    },
    {
     "data": {
      "text/html": [
       "\n",
       "\n",
       "\n",
       "\n",
       "\n",
       "\n",
       "  <div class=\"bk-root\" id=\"b5395419-b7b6-4564-92ca-401f4eab2561\" data-root-id=\"1002\"></div>\n"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "application/javascript": [
       "(function(root) {\n",
       "  function embed_document(root) {\n",
       "    \n",
       "  var docs_json = {\"4d1a5b66-7ee1-4c80-9464-7bb2c0134692\":{\"roots\":{\"references\":[{\"attributes\":{\"below\":[{\"id\":\"1013\",\"type\":\"LinearAxis\"}],\"center\":[{\"id\":\"1017\",\"type\":\"Grid\"},{\"id\":\"1022\",\"type\":\"Grid\"}],\"left\":[{\"id\":\"1018\",\"type\":\"LinearAxis\"}],\"renderers\":[{\"id\":\"1035\",\"type\":\"GlyphRenderer\"}],\"title\":{\"id\":\"1003\",\"type\":\"Title\"},\"toolbar\":{\"id\":\"1027\",\"type\":\"Toolbar\"},\"toolbar_location\":\"above\",\"x_range\":{\"id\":\"1005\",\"type\":\"DataRange1d\"},\"x_scale\":{\"id\":\"1009\",\"type\":\"LinearScale\"},\"y_range\":{\"id\":\"1007\",\"type\":\"DataRange1d\"},\"y_scale\":{\"id\":\"1011\",\"type\":\"LinearScale\"}},\"id\":\"1002\",\"subtype\":\"Figure\",\"type\":\"Plot\"},{\"attributes\":{\"text\":\"Word Positive/Negative Affinity Distribution\"},\"id\":\"1003\",\"type\":\"Title\"},{\"attributes\":{},\"id\":\"1025\",\"type\":\"ResetTool\"},{\"attributes\":{},\"id\":\"1026\",\"type\":\"SaveTool\"},{\"attributes\":{\"bottom\":{\"value\":0},\"fill_color\":{\"value\":\"#1f77b4\"},\"left\":{\"field\":\"left\"},\"line_color\":{\"value\":\"#555555\"},\"right\":{\"field\":\"right\"},\"top\":{\"field\":\"top\"}},\"id\":\"1033\",\"type\":\"Quad\"},{\"attributes\":{\"active_drag\":\"auto\",\"active_inspect\":\"auto\",\"active_multi\":null,\"active_scroll\":\"auto\",\"active_tap\":\"auto\",\"tools\":[{\"id\":\"1023\",\"type\":\"PanTool\"},{\"id\":\"1024\",\"type\":\"WheelZoomTool\"},{\"id\":\"1025\",\"type\":\"ResetTool\"},{\"id\":\"1026\",\"type\":\"SaveTool\"}]},\"id\":\"1027\",\"type\":\"Toolbar\"},{\"attributes\":{\"source\":{\"id\":\"1032\",\"type\":\"ColumnDataSource\"}},\"id\":\"1036\",\"type\":\"CDSView\"},{\"attributes\":{\"callback\":null},\"id\":\"1005\",\"type\":\"DataRange1d\"},{\"attributes\":{\"callback\":null},\"id\":\"1007\",\"type\":\"DataRange1d\"},{\"attributes\":{},\"id\":\"1038\",\"type\":\"BasicTickFormatter\"},{\"attributes\":{\"callback\":null,\"data\":{\"left\":{\"__ndarray__\":\"fZ7TvBbhE8D57U6VKH4TwHU9ym06GxPA8YxFRky4EsBu3MAeXlUSwOorPPdv8hHAZnu3z4GPEcDiyjKokywRwF4aroClyRDA2mkpWbdmEMBWuaQxyQMQwKURQBS2QQ/AnbA2xdl7DsCVTy12/bUNwI7uIych8AzAho0a2EQqDMB+LBGJaGQLwHbLBzqMngrAbmr+6q/YCcBnCfWb0xIJwF+o60z3TAjAV0fi/RqHB8BQ5tiuPsEGwEiFz19i+wXAQCTGEIY1BcA4w7zBqW8EwDBis3LNqQPAKQGqI/HjAsAhoKDUFB4CwBk/l4U4WAHAEt6NNlySAMAU+gjP/5j/vwQ49jBHDf6/9HXjko6B/L/ks9D01fX6v9bxvVYdavm/xi+ruGTe97+2bZgarFL2v6irhXzzxvS/mOly3jo787+IJ2BAgq/xv3hlTaLJI/C/0EZ1CCIw7b+wwk/MsBjqv5g+KpA/Aee/eLoEVM7p479YNt8XXdLgv3Bkc7fXddu/MFwoP/VG1b/gp7qNJTDOv2CXJJ1g0sG/gBs6sm7Spb+AJh4QpaSrPwCanTTuRsM/gKozJbOkzz+A3eQKPAHWP8DlL4MeMNw/AHe9fYAv4T8g++K58UbkP0B/CPZiXuc/WAMuMtR16j94h1NuRY3tP8yFPFVbUvA/3EdP8xPe8T/sCWKRzGnzP/zLdC+F9fQ/DI6HzT2B9j8cUJpr9gz4PywSrQmvmPk/ONS/p2ck+z9IltJFILD8P1hY5ePYO/4/aBr4gZHH/z88bgUQpakAQETPDl+BbwFATDAYrl01AkBSkSH9OfsCQFryKkwWwQNAYlM0m/KGBEBqtD3qzkwFQHIVRzmrEgZAenZQiIfYBkCC11nXY54HQIo4YyZAZAhAkplsdRwqCUCa+nXE+O8JQKJbfxPVtQpAqryIYrF7C0CuHZKxjUEMQLZ+mwBqBw1Avt+kT0bNDUDGQK6eIpMOQM6ht+3+WA9Aa4Fgnm0PEEDvMeXFW3IQQHPiae1J1RBA95LuFDg4EUB7Q3M8JpsRQP/z92MU/hFAg6R8iwJhEkA=\",\"dtype\":\"float64\",\"shape\":[100]},\"right\":{\"__ndarray__\":\"+e1OlSh+E8B1PcptOhsTwPGMRUZMuBLAbtzAHl5VEsDqKzz3b/IRwGZ7t8+BjxHA4soyqJMsEcBeGq6ApckQwNppKVm3ZhDAVrmkMckDEMClEUAUtkEPwJ2wNsXZew7AlU8tdv21DcCO7iMnIfAMwIaNGthEKgzAfiwRiWhkC8B2ywc6jJ4KwG5q/uqv2AnAZwn1m9MSCcBfqOtM90wIwFdH4v0ahwfAUObYrj7BBsBIhc9fYvsFwEAkxhCGNQXAOMO8walvBMAwYrNyzakDwCkBqiPx4wLAIaCg1BQeAsAZP5eFOFgBwBLejTZckgDAFPoIz/+Y/78EOPYwRw3+v/R145KOgfy/5LPQ9NX1+r/W8b1WHWr5v8Yvq7hk3ve/tm2YGqxS9r+oq4V888b0v5jpct46O/O/iCdgQIKv8b94ZU2iySPwv9BGdQgiMO2/sMJPzLAY6r+YPiqQPwHnv3i6BFTO6eO/WDbfF13S4L9wZHO313XbvzBcKD/1RtW/4Ke6jSUwzr9glySdYNLBv4AbOrJu0qW/gCYeEKWkqz8Amp007kbDP4CqMyWzpM8/gN3kCjwB1j/A5S+DHjDcPwB3vX2AL+E/IPviufFG5D9Afwj2Yl7nP1gDLjLUdeo/eIdTbkWN7T/MhTxVW1LwP9xHT/MT3vE/7Alikcxp8z/8y3QvhfX0PwyOh809gfY/HFCaa/YM+D8sEq0Jr5j5PzjUv6dnJPs/SJbSRSCw/D9YWOXj2Dv+P2ga+IGRx/8/PG4FEKWpAEBEzw5fgW8BQEwwGK5dNQJAUpEh/Tn7AkBa8ipMFsEDQGJTNJvyhgRAarQ96s5MBUByFUc5qxIGQHp2UIiH2AZAgtdZ12OeB0CKOGMmQGQIQJKZbHUcKglAmvp1xPjvCUCiW38T1bUKQKq8iGKxewtArh2SsY1BDEC2fpsAagcNQL7fpE9GzQ1AxkCuniKTDkDOobft/lgPQGuBYJ5tDxBA7zHlxVtyEEBz4mntSdUQQPeS7hQ4OBFAe0NzPCabEUD/8/djFP4RQIOkfIsCYRJABlUBs/DDEkA=\",\"dtype\":\"float64\",\"shape\":[100]},\"top\":{\"__ndarray__\":\"fU9HZ7zuYz8AAAAAAAAAAAAAAAAAAAAAsE9HZ7zuYz8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACWT0dnvO5jPwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAH1PR2e87mM/lk9HZ7zuYz8AAAAAAAAAAH1PR2e87mM/lk9HZ7zuYz8AAAAAAAAAAH1PR2e87mM/fU9HZ7zucz99T0dnvO5jP2L36poa5n0/fU9HZ7zugz9cIxmBa+qIP5ZPR2e87mM/O/fqmhrmjT9MDQIOQ2ibP1wjGYFr6og/bDkw9JNslj99IxmBa+qIP4Xa0qDQr6I/VJiNR1cpqj+JOTD0k2ymP0wNAg5DaKs/CaCYvVoQsj+NZV7a5HCxP+hzatcJDLc/RIJ21C6nvD/vbORYdz7EP4GfE8bp9sw/92EbmxsK0D+F2tKg0K/SP3fsId2+sdk/y4L7y5/A4T+G7oX42/HkP72USgiOwug/TA0CDkNo6z+qS38wgm7tP8YziZmtxek/6HNq1wkM5z9J5ZteLOTmP/d1zvImTOI/mkC2ciY62T90xLstqC3VPyBiG5sbCtA/dMS7LagtxT+6bORYdz7EP1SYjUdXKbo/CaCYvVoQsj90xLstqC21P31PR2e87qM/bDkw9JNspj9MDQIOQ2ibP8Dw6RP5MaA/fU9HZ7zukz879+qaGuaNP1wjGYFr6og/O/fqmhrmfT99T0dnvO5zP31PR2e87mM/AAAAAAAAAAB9T0dnvO5jP31PR2e87mM/fU9HZ7zuYz99T0dnvO5jP31PR2e87nM/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfU9HZ7zuYz8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfU9HZ7zuYz8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAsE9HZ7zuYz8=\",\"dtype\":\"float64\",\"shape\":[100]}},\"selected\":{\"id\":\"1042\",\"type\":\"Selection\"},\"selection_policy\":{\"id\":\"1043\",\"type\":\"UnionRenderers\"}},\"id\":\"1032\",\"type\":\"ColumnDataSource\"},{\"attributes\":{},\"id\":\"1009\",\"type\":\"LinearScale\"},{\"attributes\":{},\"id\":\"1040\",\"type\":\"BasicTickFormatter\"},{\"attributes\":{},\"id\":\"1011\",\"type\":\"LinearScale\"},{\"attributes\":{},\"id\":\"1042\",\"type\":\"Selection\"},{\"attributes\":{\"formatter\":{\"id\":\"1040\",\"type\":\"BasicTickFormatter\"},\"ticker\":{\"id\":\"1014\",\"type\":\"BasicTicker\"}},\"id\":\"1013\",\"type\":\"LinearAxis\"},{\"attributes\":{},\"id\":\"1043\",\"type\":\"UnionRenderers\"},{\"attributes\":{},\"id\":\"1014\",\"type\":\"BasicTicker\"},{\"attributes\":{\"ticker\":{\"id\":\"1014\",\"type\":\"BasicTicker\"}},\"id\":\"1017\",\"type\":\"Grid\"},{\"attributes\":{\"formatter\":{\"id\":\"1038\",\"type\":\"BasicTickFormatter\"},\"ticker\":{\"id\":\"1019\",\"type\":\"BasicTicker\"}},\"id\":\"1018\",\"type\":\"LinearAxis\"},{\"attributes\":{},\"id\":\"1019\",\"type\":\"BasicTicker\"},{\"attributes\":{\"dimension\":1,\"ticker\":{\"id\":\"1019\",\"type\":\"BasicTicker\"}},\"id\":\"1022\",\"type\":\"Grid\"},{\"attributes\":{},\"id\":\"1023\",\"type\":\"PanTool\"},{\"attributes\":{\"bottom\":{\"value\":0},\"fill_alpha\":{\"value\":0.1},\"fill_color\":{\"value\":\"#1f77b4\"},\"left\":{\"field\":\"left\"},\"line_alpha\":{\"value\":0.1},\"line_color\":{\"value\":\"#1f77b4\"},\"right\":{\"field\":\"right\"},\"top\":{\"field\":\"top\"}},\"id\":\"1034\",\"type\":\"Quad\"},{\"attributes\":{\"data_source\":{\"id\":\"1032\",\"type\":\"ColumnDataSource\"},\"glyph\":{\"id\":\"1033\",\"type\":\"Quad\"},\"hover_glyph\":null,\"muted_glyph\":null,\"nonselection_glyph\":{\"id\":\"1034\",\"type\":\"Quad\"},\"selection_glyph\":null,\"view\":{\"id\":\"1036\",\"type\":\"CDSView\"}},\"id\":\"1035\",\"type\":\"GlyphRenderer\"},{\"attributes\":{},\"id\":\"1024\",\"type\":\"WheelZoomTool\"}],\"root_ids\":[\"1002\"]},\"title\":\"Bokeh Application\",\"version\":\"1.4.0\"}};\n",
       "  var render_items = [{\"docid\":\"4d1a5b66-7ee1-4c80-9464-7bb2c0134692\",\"roots\":{\"1002\":\"b5395419-b7b6-4564-92ca-401f4eab2561\"}}];\n",
       "  root.Bokeh.embed.embed_items_notebook(docs_json, render_items);\n",
       "\n",
       "  }\n",
       "  if (root.Bokeh !== undefined) {\n",
       "    embed_document(root);\n",
       "  } else {\n",
       "    var attempts = 0;\n",
       "    var timer = setInterval(function(root) {\n",
       "      if (root.Bokeh !== undefined) {\n",
       "        clearInterval(timer);\n",
       "        embed_document(root);\n",
       "      } else {\n",
       "        attempts++;\n",
       "        if (attempts > 100) {\n",
       "          clearInterval(timer);\n",
       "          console.log(\"Bokeh: ERROR: Unable to run BokehJS code because BokehJS library is missing\");\n",
       "        }\n",
       "      }\n",
       "    }, 10, root)\n",
       "  }\n",
       "})(window);"
      ],
      "application/vnd.bokehjs_exec.v0+json": ""
     },
     "metadata": {
      "application/vnd.bokehjs_exec.v0+json": {
       "id": "1002"
      }
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "hist, edges = np.histogram(list(map(lambda x:x[1],pos_neg_ratios.most_common())), density=True, bins=100, normed=True)\n",
    "\n",
    "p = figure(tools=\"pan,wheel_zoom,reset,save\",\n",
    "           toolbar_location=\"above\",\n",
    "           title=\"Word Positive/Negative Affinity Distribution\")\n",
    "p.quad(top=hist, bottom=0, left=edges[:-1], right=edges[1:], line_color=\"#555555\")\n",
    "show(p)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 69,
   "metadata": {},
   "outputs": [],
   "source": [
    "frequency_frequency = Counter()\n",
    "\n",
    "for word, cnt in total_counts.most_common():\n",
    "    frequency_frequency[cnt] += 1"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 70,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "/anaconda3/lib/python3.7/site-packages/ipykernel_launcher.py:1: DeprecationWarning: The normed argument is ignored when density is provided. In future passing both will result in an error.\n",
      "  \"\"\"Entry point for launching an IPython kernel.\n"
     ]
    },
    {
     "data": {
      "text/html": [
       "\n",
       "\n",
       "\n",
       "\n",
       "\n",
       "\n",
       "  <div class=\"bk-root\" id=\"00db6b67-c8c4-47b8-9580-6c6effec02bb\" data-root-id=\"1086\"></div>\n"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "application/javascript": [
       "(function(root) {\n",
       "  function embed_document(root) {\n",
       "    \n",
       "  var docs_json = {\"a4f556fb-9db3-461c-afd3-058f2abf78a7\":{\"roots\":{\"references\":[{\"attributes\":{\"below\":[{\"id\":\"1097\",\"type\":\"LinearAxis\"}],\"center\":[{\"id\":\"1101\",\"type\":\"Grid\"},{\"id\":\"1106\",\"type\":\"Grid\"}],\"left\":[{\"id\":\"1102\",\"type\":\"LinearAxis\"}],\"renderers\":[{\"id\":\"1119\",\"type\":\"GlyphRenderer\"}],\"title\":{\"id\":\"1087\",\"type\":\"Title\"},\"toolbar\":{\"id\":\"1111\",\"type\":\"Toolbar\"},\"toolbar_location\":\"above\",\"x_range\":{\"id\":\"1089\",\"type\":\"DataRange1d\"},\"x_scale\":{\"id\":\"1093\",\"type\":\"LinearScale\"},\"y_range\":{\"id\":\"1091\",\"type\":\"DataRange1d\"},\"y_scale\":{\"id\":\"1095\",\"type\":\"LinearScale\"}},\"id\":\"1086\",\"subtype\":\"Figure\",\"type\":\"Plot\"},{\"attributes\":{\"dimension\":1,\"ticker\":{\"id\":\"1103\",\"type\":\"BasicTicker\"}},\"id\":\"1106\",\"type\":\"Grid\"},{\"attributes\":{},\"id\":\"1098\",\"type\":\"BasicTicker\"},{\"attributes\":{\"ticker\":{\"id\":\"1098\",\"type\":\"BasicTicker\"}},\"id\":\"1101\",\"type\":\"Grid\"},{\"attributes\":{\"formatter\":{\"id\":\"1129\",\"type\":\"BasicTickFormatter\"},\"ticker\":{\"id\":\"1103\",\"type\":\"BasicTicker\"}},\"id\":\"1102\",\"type\":\"LinearAxis\"},{\"attributes\":{},\"id\":\"1129\",\"type\":\"BasicTickFormatter\"},{\"attributes\":{},\"id\":\"1103\",\"type\":\"BasicTicker\"},{\"attributes\":{\"bottom\":{\"value\":0},\"fill_alpha\":{\"value\":0.1},\"fill_color\":{\"value\":\"#1f77b4\"},\"left\":{\"field\":\"left\"},\"line_alpha\":{\"value\":0.1},\"line_color\":{\"value\":\"#1f77b4\"},\"right\":{\"field\":\"right\"},\"top\":{\"field\":\"top\"}},\"id\":\"1118\",\"type\":\"Quad\"},{\"attributes\":{},\"id\":\"1107\",\"type\":\"PanTool\"},{\"attributes\":{},\"id\":\"1108\",\"type\":\"WheelZoomTool\"},{\"attributes\":{},\"id\":\"1109\",\"type\":\"ResetTool\"},{\"attributes\":{},\"id\":\"1110\",\"type\":\"SaveTool\"},{\"attributes\":{\"bottom\":{\"value\":0},\"fill_color\":{\"value\":\"#1f77b4\"},\"left\":{\"field\":\"left\"},\"line_color\":{\"value\":\"#555555\"},\"right\":{\"field\":\"right\"},\"top\":{\"field\":\"top\"}},\"id\":\"1117\",\"type\":\"Quad\"},{\"attributes\":{\"active_drag\":\"auto\",\"active_inspect\":\"auto\",\"active_multi\":null,\"active_scroll\":\"auto\",\"active_tap\":\"auto\",\"tools\":[{\"id\":\"1107\",\"type\":\"PanTool\"},{\"id\":\"1108\",\"type\":\"WheelZoomTool\"},{\"id\":\"1109\",\"type\":\"ResetTool\"},{\"id\":\"1110\",\"type\":\"SaveTool\"}]},\"id\":\"1111\",\"type\":\"Toolbar\"},{\"attributes\":{\"data_source\":{\"id\":\"1116\",\"type\":\"ColumnDataSource\"},\"glyph\":{\"id\":\"1117\",\"type\":\"Quad\"},\"hover_glyph\":null,\"muted_glyph\":null,\"nonselection_glyph\":{\"id\":\"1118\",\"type\":\"Quad\"},\"selection_glyph\":null,\"view\":{\"id\":\"1120\",\"type\":\"CDSView\"}},\"id\":\"1119\",\"type\":\"GlyphRenderer\"},{\"attributes\":{\"callback\":null},\"id\":\"1091\",\"type\":\"DataRange1d\"},{\"attributes\":{\"source\":{\"id\":\"1116\",\"type\":\"ColumnDataSource\"}},\"id\":\"1120\",\"type\":\"CDSView\"},{\"attributes\":{\"callback\":null,\"data\":{\"left\":{\"__ndarray__\":\"AAAAAAAA8D/NzMzMzFhxQM3MzMzMUIFANDMzMzP1iUDNzMzMzEyRQAAAAAAAn5VANDMzMzPxmUBnZmZmZkOeQM3MzMzMSqFAZ2ZmZuZzo0AAAAAAAJ2lQJqZmZkZxqdANDMzMzPvqUDNzMzMTBisQGdmZmZmQa5AAAAAAEA1sEDNzMzMzEmxQJqZmZlZXrJAZ2ZmZuZys0AzMzMzc4e0QAAAAAAAnLVAzczMzIywtkCamZmZGcW3QGdmZmam2bhANDMzMzPuuUAAAAAAwAK7QM3MzMxMF7xAmpmZmdkrvUBnZmZmZkC+QDQzMzPzVL9AAAAAAMA0wEBnZmZmBr/AQM3MzMxMScFAMzMzM5PTwUCamZmZ2V3CQAAAAAAg6MJAZ2ZmZmZyw0DNzMzMrPzDQDMzMzPzhsRAmpmZmTkRxUAAAAAAgJvFQGdmZmbGJcZAzczMzAywxkAzMzMzUzrHQJqZmZmZxMdAAAAAAOBOyEBnZmZmJtnIQM3MzMxsY8lANDMzM7PtyUCamZmZ+XfKQAAAAABAAstAZ2ZmZoaMy0DNzMzMzBbMQDQzMzMTocxAmpmZmVkrzUAAAAAAoLXNQGdmZmbmP85AzczMzCzKzkA0MzMzc1TPQJqZmZm53s9AAAAAAIA00EAzMzMzo3nQQGdmZmbGvtBAmpmZmekD0UDNzMzMDEnRQAAAAAAwjtFAMzMzM1PT0UBnZmZmdhjSQJqZmZmZXdJAzczMzLyi0kAAAAAA4OfSQDMzMzMDLdNAZ2ZmZiZy00CamZmZSbfTQM3MzMxs/NNAAAAAAJBB1EAzMzMzs4bUQGdmZmbWy9RAmpmZmfkQ1UDNzMzMHFbVQAAAAABAm9VAMzMzM2Pg1UBnZmZmhiXWQJqZmZmpatZAzczMzMyv1kAAAAAA8PTWQDMzMzMTOtdAZ2ZmZjZ/10CamZmZWcTXQM3MzMx8CdhAAAAAAKBO2EAzMzMzw5PYQGdmZmbm2NhAmpmZmQke2UDNzMzMLGPZQAAAAABQqNlANDMzM3Pt2UBnZmZmljLaQJqZmZm5d9pAzczMzNy82kA=\",\"dtype\":\"float64\",\"shape\":[100]},\"right\":{\"__ndarray__\":\"zczMzMxYcUDNzMzMzFCBQDQzMzMz9YlAzczMzMxMkUAAAAAAAJ+VQDQzMzMz8ZlAZ2ZmZmZDnkDNzMzMzEqhQGdmZmbmc6NAAAAAAACdpUCamZmZGcanQDQzMzMz76lAzczMzEwYrEBnZmZmZkGuQAAAAABANbBAzczMzMxJsUCamZmZWV6yQGdmZmbmcrNAMzMzM3OHtEAAAAAAAJy1QM3MzMyMsLZAmpmZmRnFt0BnZmZmptm4QDQzMzMz7rlAAAAAAMACu0DNzMzMTBe8QJqZmZnZK71AZ2ZmZmZAvkA0MzMz81S/QAAAAADANMBAZ2ZmZga/wEDNzMzMTEnBQDMzMzOT08FAmpmZmdldwkAAAAAAIOjCQGdmZmZmcsNAzczMzKz8w0AzMzMz84bEQJqZmZk5EcVAAAAAAICbxUBnZmZmxiXGQM3MzMwMsMZAMzMzM1M6x0CamZmZmcTHQAAAAADgTshAZ2ZmZibZyEDNzMzMbGPJQDQzMzOz7clAmpmZmfl3ykAAAAAAQALLQGdmZmaGjMtAzczMzMwWzEA0MzMzE6HMQJqZmZlZK81AAAAAAKC1zUBnZmZm5j/OQM3MzMwsys5ANDMzM3NUz0CamZmZud7PQAAAAACANNBAMzMzM6N50EBnZmZmxr7QQJqZmZnpA9FAzczMzAxJ0UAAAAAAMI7RQDMzMzNT09FAZ2ZmZnYY0kCamZmZmV3SQM3MzMy8otJAAAAAAODn0kAzMzMzAy3TQGdmZmYmctNAmpmZmUm300DNzMzMbPzTQAAAAACQQdRAMzMzM7OG1EBnZmZm1svUQJqZmZn5ENVAzczMzBxW1UAAAAAAQJvVQDMzMzNj4NVAZ2ZmZoYl1kCamZmZqWrWQM3MzMzMr9ZAAAAAAPD01kAzMzMzEzrXQGdmZmY2f9dAmpmZmVnE10DNzMzMfAnYQAAAAACgTthAMzMzM8OT2EBnZmZm5tjYQJqZmZkJHtlAzczMzCxj2UAAAAAAUKjZQDQzMzNz7dlAZ2ZmZpYy2kCamZmZuXfaQM3MzMzcvNpAAAAAAAAC20A=\",\"dtype\":\"float64\",\"shape\":[100]},\"top\":{\"__ndarray__\":\"TDhFg5YVbT+JTZDME4n7PtMKDQpDB+Y+1QoNCkMH1j7VCg0KQwfWPgAAAAAAAAAA1QoNCkMHxj7VCg0KQwfGPgAAAAAAAAAA2goNCkMHxj4AAAAAAAAAAAAAAAAAAAAA2goNCkMHxj4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA5QoNCkMHxj4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOUKDQpDB8Y+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA5QoNCkMHxj4=\",\"dtype\":\"float64\",\"shape\":[100]}},\"selected\":{\"id\":\"1133\",\"type\":\"Selection\"},\"selection_policy\":{\"id\":\"1134\",\"type\":\"UnionRenderers\"}},\"id\":\"1116\",\"type\":\"ColumnDataSource\"},{\"attributes\":{\"text\":\"The frequency distribution of the words in our corpus\"},\"id\":\"1087\",\"type\":\"Title\"},{\"attributes\":{\"formatter\":{\"id\":\"1131\",\"type\":\"BasicTickFormatter\"},\"ticker\":{\"id\":\"1098\",\"type\":\"BasicTicker\"}},\"id\":\"1097\",\"type\":\"LinearAxis\"},{\"attributes\":{},\"id\":\"1131\",\"type\":\"BasicTickFormatter\"},{\"attributes\":{\"callback\":null},\"id\":\"1089\",\"type\":\"DataRange1d\"},{\"attributes\":{},\"id\":\"1133\",\"type\":\"Selection\"},{\"attributes\":{},\"id\":\"1095\",\"type\":\"LinearScale\"},{\"attributes\":{},\"id\":\"1134\",\"type\":\"UnionRenderers\"},{\"attributes\":{},\"id\":\"1093\",\"type\":\"LinearScale\"}],\"root_ids\":[\"1086\"]},\"title\":\"Bokeh Application\",\"version\":\"1.4.0\"}};\n",
       "  var render_items = [{\"docid\":\"a4f556fb-9db3-461c-afd3-058f2abf78a7\",\"roots\":{\"1086\":\"00db6b67-c8c4-47b8-9580-6c6effec02bb\"}}];\n",
       "  root.Bokeh.embed.embed_items_notebook(docs_json, render_items);\n",
       "\n",
       "  }\n",
       "  if (root.Bokeh !== undefined) {\n",
       "    embed_document(root);\n",
       "  } else {\n",
       "    var attempts = 0;\n",
       "    var timer = setInterval(function(root) {\n",
       "      if (root.Bokeh !== undefined) {\n",
       "        clearInterval(timer);\n",
       "        embed_document(root);\n",
       "      } else {\n",
       "        attempts++;\n",
       "        if (attempts > 100) {\n",
       "          clearInterval(timer);\n",
       "          console.log(\"Bokeh: ERROR: Unable to run BokehJS code because BokehJS library is missing\");\n",
       "        }\n",
       "      }\n",
       "    }, 10, root)\n",
       "  }\n",
       "})(window);"
      ],
      "application/vnd.bokehjs_exec.v0+json": ""
     },
     "metadata": {
      "application/vnd.bokehjs_exec.v0+json": {
       "id": "1086"
      }
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "hist, edges = np.histogram(list(map(lambda x:x[1],frequency_frequency.most_common())), density=True, bins=100, normed=True)\n",
    "\n",
    "p = figure(tools=\"pan,wheel_zoom,reset,save\",\n",
    "           toolbar_location=\"above\",\n",
    "           title=\"The frequency distribution of the words in our corpus\")\n",
    "p.quad(top=hist, bottom=0, left=edges[:-1], right=edges[1:], line_color=\"#555555\")\n",
    "show(p)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Project 6: Reducing Noise by Strategically Reducing the Vocabulary<a id='project_6'></a>\n",
    "\n",
    "**TODO:** Improve `SentimentNetwork`'s performance by reducing more noise in the vocabulary. Specifically, do the following:\n",
    "* Copy the `SentimentNetwork` class from the previous project into the following cell.\n",
    "* Modify `pre_process_data`:\n",
    ">* Add two additional parameters: `min_count` and `polarity_cutoff`\n",
    ">* Calculate the positive-to-negative ratios of words used in the reviews. (You can use code you've written elsewhere in the notebook, but we are moving it into the class like we did with other helper code earlier.)\n",
    ">* Andrew's solution only calculates a postive-to-negative ratio for words that occur at least 50 times. This keeps the network from attributing too much sentiment to rarer words. You can choose to add this to your solution if you would like.  \n",
    ">* Change so words are only added to the vocabulary if they occur in the vocabulary more than `min_count` times.\n",
    ">* Change so words are only added to the vocabulary if the absolute value of their postive-to-negative ratio is at least `polarity_cutoff`\n",
    "* Modify `__init__`:\n",
    ">* Add the same two parameters (`min_count` and `polarity_cutoff`) and use them when you call `pre_process_data`"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 71,
   "metadata": {},
   "outputs": [],
   "source": [
    "# TODO: -Copy the SentimentNetwork class from Project 5 lesson\n",
    "#       -Modify it according to the above instructions \n",
    "import time\n",
    "import sys\n",
    "import numpy as np\n",
    "\n",
    "# Encapsulate our neural network in a class\n",
    "class SentimentNetwork:\n",
    "    ## New for Project 6: added min_count and polarity_cutoff parameters\n",
    "    def __init__(self, reviews,labels,min_count = 10,polarity_cutoff = 0.1,hidden_nodes = 10, learning_rate = 0.1):\n",
    "        \"\"\"Create a SentimenNetwork with the given settings\n",
    "        Args:\n",
    "            reviews(list) - List of reviews used for training\n",
    "            labels(list) - List of POSITIVE/NEGATIVE labels associated with the given reviews\n",
    "            min_count(int) - Words should only be added to the vocabulary \n",
    "                             if they occur more than this many times\n",
    "            polarity_cutoff(float) - The absolute value of a word's positive-to-negative\n",
    "                                     ratio must be at least this big to be considered.\n",
    "            hidden_nodes(int) - Number of nodes to create in the hidden layer\n",
    "            learning_rate(float) - Learning rate to use while training\n",
    "        \n",
    "        \"\"\"\n",
    "        # Assign a seed to our random number generator to ensure we get\n",
    "        # reproducable results during development \n",
    "        np.random.seed(1)\n",
    "\n",
    "        # process the reviews and their associated labels so that everything\n",
    "        # is ready for training\n",
    "        ## New for Project 6: added min_count and polarity_cutoff arguments to pre_process_data call\n",
    "        self.pre_process_data(reviews, labels, polarity_cutoff, min_count)\n",
    "        \n",
    "        # Build the network to have the number of hidden nodes and the learning rate that\n",
    "        # were passed into this initializer. Make the same number of input nodes as\n",
    "        # there are vocabulary words and create a single output node.\n",
    "        self.init_network(len(self.review_vocab),hidden_nodes, 1, learning_rate)\n",
    "\n",
    "    ## New for Project 6: added min_count and polarity_cutoff parameters\n",
    "    def pre_process_data(self, reviews, labels, polarity_cutoff, min_count):\n",
    "        \n",
    "        positive_counts = Counter()\n",
    "        negative_counts = Counter()\n",
    "        total_counts = Counter()\n",
    "\n",
    "        for i in range(len(reviews)):\n",
    "            if(labels[i] == 'POSITIVE'):\n",
    "                for word in reviews[i].split(\" \"):\n",
    "                    positive_counts[word] += 1\n",
    "                    total_counts[word] += 1\n",
    "            else:\n",
    "                for word in reviews[i].split(\" \"):\n",
    "                    negative_counts[word] += 1\n",
    "                    total_counts[word] += 1\n",
    "\n",
    "        pos_neg_ratios = Counter()\n",
    "\n",
    "        for term,cnt in list(total_counts.most_common()):\n",
    "            if(cnt >= 50):\n",
    "                pos_neg_ratio = positive_counts[term] / float(negative_counts[term]+1)\n",
    "                pos_neg_ratios[term] = pos_neg_ratio\n",
    "\n",
    "        for word,ratio in pos_neg_ratios.most_common():\n",
    "            if(ratio > 1):\n",
    "                pos_neg_ratios[word] = np.log(ratio)\n",
    "            else:\n",
    "                pos_neg_ratios[word] = -np.log((1 / (ratio + 0.01)))\n",
    "\n",
    "        # populate review_vocab with all of the words in the given reviews\n",
    "        review_vocab = set()\n",
    "        for review in reviews:\n",
    "            for word in review.split(\" \"):\n",
    "                ## New for Project 6: only add words that occur at least min_count times\n",
    "                #                     and for words with pos/neg ratios, only add words\n",
    "                #                     that meet the polarity_cutoff\n",
    "                if(total_counts[word] > min_count):\n",
    "                    if(word in pos_neg_ratios.keys()):\n",
    "                        if((pos_neg_ratios[word] >= polarity_cutoff) or (pos_neg_ratios[word] <= -polarity_cutoff)):\n",
    "                            review_vocab.add(word)\n",
    "                    else:\n",
    "                        review_vocab.add(word)\n",
    "\n",
    "        # Convert the vocabulary set to a list so we can access words via indices\n",
    "        self.review_vocab = list(review_vocab)\n",
    "        \n",
    "        # populate label_vocab with all of the words in the given labels.\n",
    "        label_vocab = set()\n",
    "        for label in labels:\n",
    "            label_vocab.add(label)\n",
    "        \n",
    "        # Convert the label vocabulary set to a list so we can access labels via indices\n",
    "        self.label_vocab = list(label_vocab)\n",
    "        \n",
    "        # Store the sizes of the review and label vocabularies.\n",
    "        self.review_vocab_size = len(self.review_vocab)\n",
    "        self.label_vocab_size = len(self.label_vocab)\n",
    "        \n",
    "        # Create a dictionary of words in the vocabulary mapped to index positions\n",
    "        self.word2index = {}\n",
    "        for i, word in enumerate(self.review_vocab):\n",
    "            self.word2index[word] = i\n",
    "        \n",
    "        # Create a dictionary of labels mapped to index positions\n",
    "        self.label2index = {}\n",
    "        for i, label in enumerate(self.label_vocab):\n",
    "            self.label2index[label] = i\n",
    "\n",
    "    def init_network(self, input_nodes, hidden_nodes, output_nodes, learning_rate):\n",
    "        # Set number of nodes in input, hidden and output layers.\n",
    "        self.input_nodes = input_nodes\n",
    "        self.hidden_nodes = hidden_nodes\n",
    "        self.output_nodes = output_nodes\n",
    "\n",
    "        # Store the learning rate\n",
    "        self.learning_rate = learning_rate\n",
    "\n",
    "        # Initialize weights\n",
    "\n",
    "        # These are the weights between the input layer and the hidden layer.\n",
    "        self.weights_0_1 = np.zeros((self.input_nodes,self.hidden_nodes))\n",
    "\n",
    "        # These are the weights between the hidden layer and the output layer.\n",
    "        self.weights_1_2 = np.random.normal(0.0, self.output_nodes**-0.5, \n",
    "                                                (self.hidden_nodes, self.output_nodes))\n",
    "        \n",
    "        ## New for Project 5: Removed self.layer_0; added self.layer_1\n",
    "        # The input layer, a two-dimensional matrix with shape 1 x hidden_nodes\n",
    "        self.layer_1 = np.zeros((1,hidden_nodes))\n",
    "    \n",
    "    ## New for Project 5: Removed update_input_layer function\n",
    "    \n",
    "    def get_target_for_label(self,label):\n",
    "        if(label == 'POSITIVE'):\n",
    "            return 1\n",
    "        else:\n",
    "            return 0\n",
    "        \n",
    "    def sigmoid(self,x):\n",
    "        return 1 / (1 + np.exp(-x))\n",
    "    \n",
    "    def sigmoid_output_2_derivative(self,output):\n",
    "        return output * (1 - output)\n",
    "    \n",
    "    ## New for Project 5: changed name of first parameter form 'training_reviews' \n",
    "    #                     to 'training_reviews_raw'\n",
    "    def train(self, training_reviews_raw, training_labels):\n",
    "\n",
    "        ## New for Project 5: pre-process training reviews so we can deal \n",
    "        #                     directly with the indices of non-zero inputs\n",
    "        training_reviews = list()\n",
    "        for review in training_reviews_raw:\n",
    "            indices = set()\n",
    "            for word in review.split(\" \"):\n",
    "                if(word in self.word2index.keys()):\n",
    "                    indices.add(self.word2index[word])\n",
    "            training_reviews.append(list(indices))\n",
    "\n",
    "        # make sure out we have a matching number of reviews and labels\n",
    "        assert(len(training_reviews) == len(training_labels))\n",
    "        \n",
    "        # Keep track of correct predictions to display accuracy during training \n",
    "        correct_so_far = 0\n",
    "\n",
    "        # Remember when we started for printing time statistics\n",
    "        start = time.time()\n",
    "        \n",
    "        # loop through all the given reviews and run a forward and backward pass,\n",
    "        # updating weights for every item\n",
    "        for i in range(len(training_reviews)):\n",
    "            \n",
    "            # Get the next review and its correct label\n",
    "            review = training_reviews[i]\n",
    "            label = training_labels[i]\n",
    "            \n",
    "            #### Implement the forward pass here ####\n",
    "            ### Forward pass ###\n",
    "\n",
    "            ## New for Project 5: Removed call to 'update_input_layer' function\n",
    "            #                     because 'layer_0' is no longer used\n",
    "\n",
    "            # Hidden layer\n",
    "            ## New for Project 5: Add in only the weights for non-zero items\n",
    "            self.layer_1 *= 0\n",
    "            for index in review:\n",
    "                self.layer_1 += self.weights_0_1[index]\n",
    "\n",
    "            # Output layer\n",
    "            ## New for Project 5: changed to use 'self.layer_1' instead of 'local layer_1'\n",
    "            layer_2 = self.sigmoid(self.layer_1.dot(self.weights_1_2))            \n",
    "            \n",
    "            #### Implement the backward pass here ####\n",
    "            ### Backward pass ###\n",
    "\n",
    "            # Output error\n",
    "            layer_2_error = layer_2 - self.get_target_for_label(label) # Output layer error is the difference between desired target and actual output.\n",
    "            layer_2_delta = layer_2_error * self.sigmoid_output_2_derivative(layer_2)\n",
    "\n",
    "            # Backpropagated error\n",
    "            layer_1_error = layer_2_delta.dot(self.weights_1_2.T) # errors propagated to the hidden layer\n",
    "            layer_1_delta = layer_1_error # hidden layer gradients - no nonlinearity so it's the same as the error\n",
    "\n",
    "            # Update the weights\n",
    "            ## New for Project 5: changed to use 'self.layer_1' instead of local 'layer_1'\n",
    "            self.weights_1_2 -= self.layer_1.T.dot(layer_2_delta) * self.learning_rate # update hidden-to-output weights with gradient descent step\n",
    "            \n",
    "            ## New for Project 5: Only update the weights that were used in the forward pass\n",
    "            for index in review:\n",
    "                self.weights_0_1[index] -= layer_1_delta[0] * self.learning_rate # update input-to-hidden weights with gradient descent step\n",
    "\n",
    "            # Keep track of correct predictions.\n",
    "            if(layer_2 >= 0.5 and label == 'POSITIVE'):\n",
    "                correct_so_far += 1\n",
    "            elif(layer_2 < 0.5 and label == 'NEGATIVE'):\n",
    "                correct_so_far += 1\n",
    "            \n",
    "            # For debug purposes, print out our prediction accuracy and speed \n",
    "            # throughout the training process. \n",
    "            elapsed_time = float(time.time() - start)\n",
    "            reviews_per_second = i / elapsed_time if elapsed_time > 0 else 0\n",
    "            \n",
    "            sys.stdout.write(\"\\rProgress:\" + str(100 * i/float(len(training_reviews)))[:4] \\\n",
    "                             + \"% Speed(reviews/sec):\" + str(reviews_per_second)[0:5] \\\n",
    "                             + \" #Correct:\" + str(correct_so_far) + \" #Trained:\" + str(i+1) \\\n",
    "                             + \" Training Accuracy:\" + str(correct_so_far * 100 / float(i+1))[:4] + \"%\")\n",
    "            if(i % 2500 == 0):\n",
    "                print(\"\")\n",
    "    \n",
    "    def test(self, testing_reviews, testing_labels):\n",
    "        \"\"\"\n",
    "        Attempts to predict the labels for the given testing_reviews,\n",
    "        and uses the test_labels to calculate the accuracy of those predictions.\n",
    "        \"\"\"\n",
    "        \n",
    "        # keep track of how many correct predictions we make\n",
    "        correct = 0\n",
    "\n",
    "        # we'll time how many predictions per second we make\n",
    "        start = time.time()\n",
    "\n",
    "        # Loop through each of the given reviews and call run to predict\n",
    "        # its label. \n",
    "        for i in range(len(testing_reviews)):\n",
    "            pred = self.run(testing_reviews[i])\n",
    "            if(pred == testing_labels[i]):\n",
    "                correct += 1\n",
    "            \n",
    "            # For debug purposes, print out our prediction accuracy and speed \n",
    "            # throughout the prediction process. \n",
    "\n",
    "            elapsed_time = float(time.time() - start)\n",
    "            reviews_per_second = i / elapsed_time if elapsed_time > 0 else 0\n",
    "            \n",
    "            sys.stdout.write(\"\\rProgress:\" + str(100 * i/float(len(testing_reviews)))[:4] \\\n",
    "                             + \"% Speed(reviews/sec):\" + str(reviews_per_second)[0:5] \\\n",
    "                             + \" #Correct:\" + str(correct) + \" #Tested:\" + str(i+1) \\\n",
    "                             + \" Testing Accuracy:\" + str(correct * 100 / float(i+1))[:4] + \"%\")\n",
    "    \n",
    "    def run(self, review):\n",
    "        \"\"\"\n",
    "        Returns a POSITIVE or NEGATIVE prediction for the given review.\n",
    "        \"\"\"\n",
    "        # Run a forward pass through the network, like in the \"train\" function.\n",
    "        \n",
    "        ## New for Project 5: Removed call to update_input_layer function\n",
    "        #                     because layer_0 is no longer used\n",
    "\n",
    "        # Hidden layer\n",
    "        ## New for Project 5: Identify the indices used in the review and then add\n",
    "        #                     just those weights to layer_1 \n",
    "        self.layer_1 *= 0\n",
    "        unique_indices = set()\n",
    "        for word in review.lower().split(\" \"):\n",
    "            if word in self.word2index.keys():\n",
    "                unique_indices.add(self.word2index[word])\n",
    "        for index in unique_indices:\n",
    "            self.layer_1 += self.weights_0_1[index]\n",
    "        \n",
    "        # Output layer\n",
    "        ## New for Project 5: changed to use self.layer_1 instead of local layer_1\n",
    "        layer_2 = self.sigmoid(self.layer_1.dot(self.weights_1_2))\n",
    "         \n",
    "        # Return POSITIVE for values above greater-than-or-equal-to 0.5 in the output layer;\n",
    "        # return NEGATIVE for other values\n",
    "        if(layer_2[0] >= 0.5):\n",
    "            return \"POSITIVE\"\n",
    "        else:\n",
    "            return \"NEGATIVE\"\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Run the following cell to train your network with a small polarity cutoff."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 72,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Progress:0.0% Speed(reviews/sec):0.0 #Correct:1 #Trained:1 Training Accuracy:100.%\n",
      "Progress:10.4% Speed(reviews/sec):1714. #Correct:1994 #Trained:2501 Training Accuracy:79.7%\n",
      "Progress:20.8% Speed(reviews/sec):1658. #Correct:4063 #Trained:5001 Training Accuracy:81.2%\n",
      "Progress:31.2% Speed(reviews/sec):1555. #Correct:6176 #Trained:7501 Training Accuracy:82.3%\n",
      "Progress:41.6% Speed(reviews/sec):1528. #Correct:8336 #Trained:10001 Training Accuracy:83.3%\n",
      "Progress:52.0% Speed(reviews/sec):1514. #Correct:10501 #Trained:12501 Training Accuracy:84.0%\n",
      "Progress:62.5% Speed(reviews/sec):1496. #Correct:12641 #Trained:15001 Training Accuracy:84.2%\n",
      "Progress:72.9% Speed(reviews/sec):1493. #Correct:14782 #Trained:17501 Training Accuracy:84.4%\n",
      "Progress:83.3% Speed(reviews/sec):1483. #Correct:16954 #Trained:20001 Training Accuracy:84.7%\n",
      "Progress:93.7% Speed(reviews/sec):1472. #Correct:19143 #Trained:22501 Training Accuracy:85.0%\n",
      "Progress:99.9% Speed(reviews/sec):1474. #Correct:20461 #Trained:24000 Training Accuracy:85.2%"
     ]
    }
   ],
   "source": [
    "mlp = SentimentNetwork(reviews[:-1000],labels[:-1000],min_count=20,polarity_cutoff=0.05,learning_rate=0.01)\n",
    "mlp.train(reviews[:-1000],labels[:-1000])"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "And run the following cell to test it's performance. It should be "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 73,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Progress:99.9% Speed(reviews/sec):2770. #Correct:859 #Tested:1000 Testing Accuracy:85.9%"
     ]
    }
   ],
   "source": [
    "mlp.test(reviews[-1000:],labels[-1000:])"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Run the following cell to train your network with a much larger polarity cutoff."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 74,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Progress:0.0% Speed(reviews/sec):0.0 #Correct:1 #Trained:1 Training Accuracy:100.%\n",
      "Progress:10.4% Speed(reviews/sec):7030. #Correct:2114 #Trained:2501 Training Accuracy:84.5%\n",
      "Progress:20.8% Speed(reviews/sec):6487. #Correct:4235 #Trained:5001 Training Accuracy:84.6%\n",
      "Progress:31.2% Speed(reviews/sec):6310. #Correct:6362 #Trained:7501 Training Accuracy:84.8%\n",
      "Progress:41.6% Speed(reviews/sec):6173. #Correct:8513 #Trained:10001 Training Accuracy:85.1%\n",
      "Progress:52.0% Speed(reviews/sec):6047. #Correct:10641 #Trained:12501 Training Accuracy:85.1%\n",
      "Progress:62.5% Speed(reviews/sec):5712. #Correct:12796 #Trained:15001 Training Accuracy:85.3%\n",
      "Progress:72.9% Speed(reviews/sec):5746. #Correct:14911 #Trained:17501 Training Accuracy:85.2%\n",
      "Progress:83.3% Speed(reviews/sec):5675. #Correct:17077 #Trained:20001 Training Accuracy:85.3%\n",
      "Progress:93.7% Speed(reviews/sec):5483. #Correct:19258 #Trained:22501 Training Accuracy:85.5%\n",
      "Progress:99.9% Speed(reviews/sec):5400. #Correct:20552 #Trained:24000 Training Accuracy:85.6%"
     ]
    }
   ],
   "source": [
    "mlp = SentimentNetwork(reviews[:-1000],labels[:-1000],min_count=20,polarity_cutoff=0.8,learning_rate=0.01)\n",
    "mlp.train(reviews[:-1000],labels[:-1000])"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "And run the following cell to test it's performance."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 75,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Progress:99.9% Speed(reviews/sec):5255. #Correct:822 #Tested:1000 Testing Accuracy:82.2%"
     ]
    }
   ],
   "source": [
    "mlp.test(reviews[-1000:],labels[-1000:])"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# End of Project 6. \n",
    "## Watch the next video to see Andrew's solution, then continue on to the next lesson."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "collapsed": true
   },
   "source": [
    "# Analysis: What's Going on in the Weights?<a id='lesson_7'></a>"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 78,
   "metadata": {},
   "outputs": [],
   "source": [
    "mlp_full = SentimentNetwork(reviews[:-1000],labels[:-1000],min_count=0,polarity_cutoff=0,learning_rate=0.01)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 79,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Progress:0.0% Speed(reviews/sec):0.0 #Correct:1 #Trained:1 Training Accuracy:100.%\n",
      "Progress:10.4% Speed(reviews/sec):1312. #Correct:1962 #Trained:2501 Training Accuracy:78.4%\n",
      "Progress:20.8% Speed(reviews/sec):1294. #Correct:4002 #Trained:5001 Training Accuracy:80.0%\n",
      "Progress:31.2% Speed(reviews/sec):1232. #Correct:6120 #Trained:7501 Training Accuracy:81.5%\n",
      "Progress:41.6% Speed(reviews/sec):1241. #Correct:8271 #Trained:10001 Training Accuracy:82.7%\n",
      "Progress:52.0% Speed(reviews/sec):1243. #Correct:10431 #Trained:12501 Training Accuracy:83.4%\n",
      "Progress:62.5% Speed(reviews/sec):1223. #Correct:12565 #Trained:15001 Training Accuracy:83.7%\n",
      "Progress:72.9% Speed(reviews/sec):1208. #Correct:14670 #Trained:17501 Training Accuracy:83.8%\n",
      "Progress:83.3% Speed(reviews/sec):1214. #Correct:16833 #Trained:20001 Training Accuracy:84.1%\n",
      "Progress:93.7% Speed(reviews/sec):1223. #Correct:19015 #Trained:22501 Training Accuracy:84.5%\n",
      "Progress:99.9% Speed(reviews/sec):1231. #Correct:20335 #Trained:24000 Training Accuracy:84.7%"
     ]
    }
   ],
   "source": [
    "mlp_full.train(reviews[:-1000],labels[:-1000])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "Image(filename='sentiment_network_sparse.png')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 80,
   "metadata": {},
   "outputs": [],
   "source": [
    "def get_most_similar_words(focus = \"horrible\"):\n",
    "    most_similar = Counter()\n",
    "\n",
    "    for word in mlp_full.word2index.keys():\n",
    "        most_similar[word] = np.dot(mlp_full.weights_0_1[mlp_full.word2index[word]],mlp_full.weights_0_1[mlp_full.word2index[focus]])\n",
    "    \n",
    "    return most_similar.most_common()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 81,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "[('excellent', 0.1367295075735247),\n",
       " ('perfect', 0.12548286087225946),\n",
       " ('amazing', 0.0918276339259997),\n",
       " ('today', 0.09022366269441423),\n",
       " ('wonderful', 0.08935597696221459),\n",
       " ('fun', 0.08750446667420686),\n",
       " ('great', 0.08714175888229204),\n",
       " ('best', 0.08581088561788058),\n",
       " ('liked', 0.07769762912384343),\n",
       " ('definitely', 0.07662878140696604),\n",
       " ('brilliant', 0.07342385876927904),\n",
       " ('loved', 0.07328542892812213),\n",
       " ('favorite', 0.07278113603616075),\n",
       " ('superb', 0.07173620717850505),\n",
       " ('fantastic', 0.0709221919162662),\n",
       " ('job', 0.06916061720763406),\n",
       " ('incredible', 0.06642407795261444),\n",
       " ('enjoyable', 0.06563256050288879),\n",
       " ('rare', 0.06481921266261506),\n",
       " ('highly', 0.06388945335097052),\n",
       " ('enjoyed', 0.06212754610181297),\n",
       " ('wonderfully', 0.062055178604090155),\n",
       " ('perfectly', 0.06109320881188739),\n",
       " ('fascinating', 0.060663547937493865),\n",
       " ('bit', 0.059655427045653034),\n",
       " ('gem', 0.059510859296156786),\n",
       " ('outstanding', 0.058860808147083),\n",
       " ('beautiful', 0.05861393470316206),\n",
       " ('surprised', 0.05827331448256298),\n",
       " ('worth', 0.0576574842364712),\n",
       " ('especially', 0.05742202078176076),\n",
       " ('refreshing', 0.05731053209226576),\n",
       " ('entertaining', 0.05661203383562921),\n",
       " ('hilarious', 0.05616854103228665),\n",
       " ('masterpiece', 0.05499398864943157),\n",
       " ('simple', 0.05448408313492404),\n",
       " ('subtle', 0.054368883033508605),\n",
       " ('funniest', 0.0534571648713027),\n",
       " ('solid', 0.05290356474362064),\n",
       " ('awesome', 0.05248919420277043),\n",
       " ('always', 0.05226032852534529),\n",
       " ('noir', 0.051530194726406894),\n",
       " ('guys', 0.0511094136456427),\n",
       " ('sweet', 0.05081893031752599),\n",
       " ('unique', 0.0506701622635892),\n",
       " ('very', 0.05013299494852847),\n",
       " ('heart', 0.04994805849824358),\n",
       " ('moving', 0.049424601164379134),\n",
       " ('atmosphere', 0.04884250089591284),\n",
       " ('strong', 0.04857088063175921),\n",
       " ('remember', 0.04847903694229132),\n",
       " ('believable', 0.04841538439160377),\n",
       " ('shows', 0.04833604560803957),\n",
       " ('love', 0.047310648160924645),\n",
       " ('beautifully', 0.04711871744081491),\n",
       " ('both', 0.04695727890148034),\n",
       " ('terrific', 0.046686597975756625),\n",
       " ('touching', 0.046589962377280976),\n",
       " ('fine', 0.046256431328855756),\n",
       " ('caught', 0.04616332622478234),\n",
       " ('recommended', 0.04587634116088529),\n",
       " ('jack', 0.0453529099751883),\n",
       " ('everyone', 0.045145273964599386),\n",
       " ('episodes', 0.04506445706262129),\n",
       " ('classic', 0.044985816637932746),\n",
       " ('will', 0.04496667255793048),\n",
       " ('appreciate', 0.044764139584570886),\n",
       " ('powerful', 0.04417644262185276),\n",
       " ('realistic', 0.043597482283464814),\n",
       " ('performances', 0.04302024908784173),\n",
       " ('human', 0.042657925475092555),\n",
       " ('expecting', 0.042588442995212215),\n",
       " ('each', 0.04216377451966694),\n",
       " ('delightful', 0.04181500717023551),\n",
       " ('cry', 0.04175096839593483),\n",
       " ('enjoy', 0.04166009179781808),\n",
       " ('you', 0.04146599477827108),\n",
       " ('surprisingly', 0.04139313925651738),\n",
       " ('think', 0.04110372057105706),\n",
       " ('performance', 0.040844259420896825),\n",
       " ('nice', 0.04001650666693175),\n",
       " ('paced', 0.03994448864759961),\n",
       " ('true', 0.03975059264337069),\n",
       " ('tight', 0.03942543882555264),\n",
       " ('similar', 0.039222380170683496),\n",
       " ('friendship', 0.0391101127642043),\n",
       " ('somewhat', 0.03906961573101023),\n",
       " ('beauty', 0.03813092255473879),\n",
       " ('short', 0.03798170013140921),\n",
       " ('life', 0.03771663926531023),\n",
       " ('stunning', 0.03750736483254377),\n",
       " ('still', 0.03747982791010149),\n",
       " ('normal', 0.03742214466943511),\n",
       " ('works', 0.03725583018634418),\n",
       " ('appreciated', 0.03715616513806626),\n",
       " ('mind', 0.03708073940315778),\n",
       " ('twists', 0.03693255247307411),\n",
       " ('knowing', 0.036786021801572075),\n",
       " ('captures', 0.0364675068844947),\n",
       " ('certain', 0.03634835949408284),\n",
       " ('later', 0.03621004278676522),\n",
       " ('finest', 0.03613210182786265),\n",
       " ('compelling', 0.03609846491893577),\n",
       " ('others', 0.03609012020219609),\n",
       " ('tragic', 0.03600500358047276),\n",
       " ('viewing', 0.03593357245552302),\n",
       " ('above', 0.03588671784974259),\n",
       " ('them', 0.03571751328155576),\n",
       " ('matter', 0.03560271061968562),\n",
       " ('future', 0.03532377798757341),\n",
       " ('good', 0.035250130839512755),\n",
       " ('hooked', 0.035154077227308),\n",
       " ('world', 0.035098777806455046),\n",
       " ('unexpected', 0.035078442502957774),\n",
       " ('innocent', 0.03476536069672921),\n",
       " ('tears', 0.03433830992700885),\n",
       " ('certainly', 0.034301037742714126),\n",
       " ('available', 0.034268101109488025),\n",
       " ('unlike', 0.034253988843446576),\n",
       " ('season', 0.03403892242701161),\n",
       " ('vhs', 0.03401151928101813),\n",
       " ('superior', 0.03391762273249575),\n",
       " ('unusual', 0.03379779968823936),\n",
       " ('genre', 0.03376611540828725),\n",
       " ('criminal', 0.03374447272032684),\n",
       " ('makes', 0.03358700187747664),\n",
       " ('greatest', 0.03343185227197535),\n",
       " ('small', 0.0334265298705384),\n",
       " ('episode', 0.0333364437968499),\n",
       " ('deal', 0.03333610766528189),\n",
       " ('now', 0.0332833390342355),\n",
       " ('quiet', 0.03314793597752927),\n",
       " ('played', 0.033108782201536804),\n",
       " ('day', 0.033074949731286586),\n",
       " ('moved', 0.03287398075409989),\n",
       " ('underrated', 0.03273881819272633),\n",
       " ('society', 0.03261358041861625),\n",
       " ('focuses', 0.032607333858382825),\n",
       " ('intense', 0.032564318613854976),\n",
       " ('sharp', 0.03230921104092333),\n",
       " ('adds', 0.03223607658835181),\n",
       " ('check', 0.0320305411496688),\n",
       " ('take', 0.03171714019325861),\n",
       " ('deeply', 0.031693099458454575),\n",
       " ('games', 0.03166349528572016),\n",
       " ('pre', 0.031251131973427125),\n",
       " ('change', 0.03118335395986258),\n",
       " ('thanks', 0.0311723980484647),\n",
       " ('own', 0.031121337943347094),\n",
       " ('easy', 0.031088479340529655),\n",
       " ('pace', 0.030934361491678244),\n",
       " ('parts', 0.030850186028628313),\n",
       " ('truly', 0.03083663773447167),\n",
       " ('tony', 0.030739434811745025),\n",
       " ('inspired', 0.030725453849735008),\n",
       " ('thought', 0.030707437377997443),\n",
       " ('complex', 0.03046462267670203),\n",
       " ('worlds', 0.03039125517478204),\n",
       " ('language', 0.030264976200309573),\n",
       " ('soundtrack', 0.03021003213904603),\n",
       " ('steals', 0.030207167115964797),\n",
       " ('glad', 0.029812003262142273),\n",
       " ('ride', 0.029801794809751713),\n",
       " ('came', 0.02976062831303153),\n",
       " ('impact', 0.029695785634015842),\n",
       " ('personally', 0.029677477012254865),\n",
       " ('gritty', 0.02954002176261499),\n",
       " ('effective', 0.029512382123355347),\n",
       " ('wise', 0.02951040870183034),\n",
       " ('ultimate', 0.02944244067232092),\n",
       " ('ways', 0.029439341792844208),\n",
       " ('well', 0.0292383862077013),\n",
       " ('sent', 0.029147924396380094),\n",
       " ('after', 0.029037668915531292),\n",
       " ('tells', 0.029004383695691492),\n",
       " ('along', 0.028932972901634907),\n",
       " ('modern', 0.028910642159349326),\n",
       " ('family', 0.02889738066286554),\n",
       " ('pleasantly', 0.028754280601052385),\n",
       " ('edge', 0.028744687476241267),\n",
       " ('american', 0.028706398764554428),\n",
       " ('england', 0.028640930969798122),\n",
       " ('grand', 0.028581102406371916),\n",
       " ('slowly', 0.028470328912922983),\n",
       " ('treat', 0.028418097520915966),\n",
       " ('pleasure', 0.028370704112004173),\n",
       " ('living', 0.02833584521366042),\n",
       " ('impressed', 0.028311856507726562),\n",
       " ('fans', 0.028234674336798972),\n",
       " ('suspenseful', 0.028156658725541156),\n",
       " ('smile', 0.02806565183459761),\n",
       " ('jim', 0.027910842672277572),\n",
       " ('saw', 0.027900239466183006),\n",
       " ('length', 0.027896431301274532),\n",
       " ('impressive', 0.02789477824336281),\n",
       " ('times', 0.027869981332762583),\n",
       " ('witty', 0.027809121334036412),\n",
       " ('flawless', 0.027676409302939117),\n",
       " ('magic', 0.02767100140474601),\n",
       " ('though', 0.027434087841071507),\n",
       " ('subtitles', 0.027431981179380477),\n",
       " ('stands', 0.027348518548416443),\n",
       " ('freedom', 0.027271908118037397),\n",
       " ('relationship', 0.02723114637576913),\n",
       " ('tape', 0.027213179198573845),\n",
       " ('apartment', 0.02719885916091),\n",
       " ('shown', 0.027062169058709847),\n",
       " ('films', 0.027035590529373477),\n",
       " ('lot', 0.026934527370476365),\n",
       " ('barbara', 0.026837141036193602),\n",
       " ('office', 0.0267752304496563),\n",
       " ('damn', 0.026751196837598825),\n",
       " ('murder', 0.02670907321287661),\n",
       " ('brilliantly', 0.026701889741880674),\n",
       " ('learns', 0.026699872569574574),\n",
       " ('tends', 0.026683774361335767),\n",
       " ('complaint', 0.026587011626106875),\n",
       " ('themselves', 0.02652465893849896),\n",
       " ('war', 0.026518675436425325),\n",
       " ('violence', 0.026450628158076153),\n",
       " ('judge', 0.02644326777494735),\n",
       " ('thriller', 0.026431555027632114),\n",
       " ('his', 0.026370773394088606),\n",
       " ('finding', 0.026362279892885015),\n",
       " ('cast', 0.02636086088373663),\n",
       " ('police', 0.026352129453305263),\n",
       " ('once', 0.026255817642908227),\n",
       " ('spectacular', 0.026245466997092376),\n",
       " ('deserves', 0.0262145081599617),\n",
       " ('driven', 0.02619493079251163),\n",
       " ('spot', 0.026171686780563665),\n",
       " ('carrey', 0.026162838804053033),\n",
       " ('negative', 0.026161677045062212),\n",
       " ('suspense', 0.026110016575822813),\n",
       " ('flaws', 0.026085421601700312),\n",
       " ('brave', 0.026080835779725284),\n",
       " ('surprising', 0.026070851171974715),\n",
       " ('gives', 0.026069978044960775),\n",
       " ('takes', 0.026047493401813317),\n",
       " ('light', 0.025921067904644525),\n",
       " ('timing', 0.02590030345069364),\n",
       " ('crime', 0.025886011572638656),\n",
       " ('thank', 0.025873161609513355),\n",
       " ('century', 0.025871056310112637),\n",
       " ('until', 0.025870245942132532),\n",
       " ('nature', 0.025817942935875453),\n",
       " ('stellar', 0.025803971141651158),\n",
       " ('emotions', 0.025783809728671926),\n",
       " ('tremendous', 0.025772614605786563),\n",
       " ('missed', 0.025657501028952576),\n",
       " ('overall', 0.025655652485101807),\n",
       " ('haven', 0.0256506921771408),\n",
       " ('portrayal', 0.025594273657909644),\n",
       " ('taylor', 0.02551699271089817),\n",
       " ('appropriate', 0.025495908849901626),\n",
       " ('joan', 0.025489829859140636),\n",
       " ('realize', 0.025452457061382168),\n",
       " ('different', 0.025434073970060443),\n",
       " ('return', 0.025384569542597577),\n",
       " ('bound', 0.025380084410398834),\n",
       " ('noticed', 0.02530649499844077),\n",
       " ('constantly', 0.025282186745762464),\n",
       " ('first', 0.025246100888919785),\n",
       " ('lovable', 0.025213500492273062),\n",
       " ('comic', 0.025074597800944044),\n",
       " ('scared', 0.02499537651380951),\n",
       " ('fight', 0.024943209945836417),\n",
       " ('extraordinary', 0.02494036645308361),\n",
       " ('buy', 0.024803940824255577),\n",
       " ('know', 0.024749519416087048),\n",
       " ('brothers', 0.024675058346350746),\n",
       " ('action', 0.024660907824635273),\n",
       " ('needs', 0.02463485165154936),\n",
       " ('jerry', 0.024621484385343853),\n",
       " ('while', 0.024620233313683848),\n",
       " ('also', 0.024519480987472444),\n",
       " ('definite', 0.024509585305468828),\n",
       " ('genius', 0.024500478757646958),\n",
       " ('tragedy', 0.024481339186882285),\n",
       " ('heard', 0.024446567944460512),\n",
       " ('haunting', 0.024431007352898916),\n",
       " ('legendary', 0.02441277726490898),\n",
       " ('uses', 0.024358972452013995),\n",
       " ('years', 0.02431609489573525),\n",
       " ('notch', 0.02431057159721628),\n",
       " ('fabulous', 0.024258810824927632),\n",
       " ('herself', 0.024241390957491057),\n",
       " ('battle', 0.024205827940178132),\n",
       " ('ralph', 0.024205046194653308),\n",
       " ('provoking', 0.02410610606248181),\n",
       " ('ago', 0.02402454190415648),\n",
       " ('game', 0.024004541901512383),\n",
       " ('deals', 0.023947020249031),\n",
       " ('themes', 0.02393659712022113),\n",
       " ('my', 0.023928374753346027),\n",
       " ('which', 0.023908264765228705),\n",
       " ('together', 0.02388768394280823),\n",
       " ('record', 0.023879473557965505),\n",
       " ('chilling', 0.02387741367731743),\n",
       " ('absorbing', 0.023848541510400112),\n",
       " ('studios', 0.023840610970325332),\n",
       " ('helps', 0.023800338082370955),\n",
       " ('paul', 0.023782537407117967),\n",
       " ('drama', 0.02376668886201471),\n",
       " ('spots', 0.02372753448048842),\n",
       " ('japanese', 0.023708475430511473),\n",
       " ('com', 0.023663537310393362),\n",
       " ('meets', 0.02364941593652313),\n",
       " ('may', 0.023577512715288886),\n",
       " ('goal', 0.02357199244925661),\n",
       " ('out', 0.0235587537734651),\n",
       " ('page', 0.02353016067118486),\n",
       " ('con', 0.023523200814540516),\n",
       " ('thankfully', 0.023405004970711695),\n",
       " ('number', 0.023389568775323534),\n",
       " ('captured', 0.023351056068531207),\n",
       " ('joy', 0.023338854638575428),\n",
       " ('brought', 0.023336907813285963),\n",
       " ('max', 0.023250909447975865),\n",
       " ('superbly', 0.0232398711675156),\n",
       " ('those', 0.023176845007530644),\n",
       " ('course', 0.023170128305056513),\n",
       " ('inspiring', 0.023124940469820013),\n",
       " ('troubled', 0.023104553288143287),\n",
       " ('starring', 0.023098181939380295),\n",
       " ('famous', 0.02308099048423491),\n",
       " ('nowadays', 0.023041214534459807),\n",
       " ('gripping', 0.02303916033994195),\n",
       " ('identity', 0.023038352369265172),\n",
       " ('many', 0.02303005974896417),\n",
       " ('victor', 0.023028627724258656),\n",
       " ('michael', 0.022946522358330872),\n",
       " ('stop', 0.022927047859442093),\n",
       " ('eerie', 0.022877301562370833),\n",
       " ('seen', 0.02282092921742264),\n",
       " ('caused', 0.022791670672167526),\n",
       " ('moment', 0.02278906233818428),\n",
       " ('portraying', 0.02272933498308896),\n",
       " ('influence', 0.022698569029077072),\n",
       " ('when', 0.022541791159242774),\n",
       " ('touched', 0.02252563929227022),\n",
       " ('complicated', 0.02243212656634465),\n",
       " ('turns', 0.022415566693423837),\n",
       " ('young', 0.02241522806863201),\n",
       " ('award', 0.022414761392271606),\n",
       " ('put', 0.02232584900817718),\n",
       " ('trust', 0.02230149766393641),\n",
       " ('issues', 0.0222577533761875),\n",
       " ('innocence', 0.02223692899375283),\n",
       " ('anime', 0.02220168372833889),\n",
       " ('without', 0.022144543987858853),\n",
       " ('himself', 0.0220682407058744),\n",
       " ('charlie', 0.02205203730146018),\n",
       " ('parents', 0.02188813820237177),\n",
       " ('covered', 0.021887533337961756),\n",
       " ('final', 0.02187721576907954),\n",
       " ('killers', 0.02183066490039512),\n",
       " ('ages', 0.021774376677575584),\n",
       " ('usual', 0.021760980512718155),\n",
       " ('physical', 0.021749103191221822),\n",
       " ('like', 0.021730991541426763),\n",
       " ('crazy', 0.021727382570242985),\n",
       " ('puts', 0.02172573732179154),\n",
       " ('got', 0.02170157450028911),\n",
       " ('room', 0.021690968569465632),\n",
       " ('complaints', 0.021670426593916565),\n",
       " ('type', 0.02166362898294518),\n",
       " ('brings', 0.021600600975875423),\n",
       " ('remarkable', 0.02157679171939604),\n",
       " ('get', 0.021538325389801362),\n",
       " ('city', 0.021523385378314885),\n",
       " ('coming', 0.02149235161414279),\n",
       " ('traditional', 0.02143087582826979),\n",
       " ('romantic', 0.021420587536168545),\n",
       " ('cinema', 0.02141177682923096),\n",
       " ('regular', 0.02139588225557585),\n",
       " ('intelligent', 0.02139135089731543),\n",
       " ('music', 0.02138101380652744),\n",
       " ('humor', 0.021365697759571523),\n",
       " ('experience', 0.021314525649372928),\n",
       " ('favourite', 0.021253476483878257),\n",
       " ('social', 0.02125008525523737),\n",
       " ('feelings', 0.021245030895714355),\n",
       " ('cried', 0.02123327164107075),\n",
       " ('rock', 0.021213280029832367),\n",
       " ('against', 0.02115731411958726),\n",
       " ('including', 0.021156674122491396),\n",
       " ('honest', 0.021143458758793504),\n",
       " ('parallel', 0.021107353247706455),\n",
       " ('eddie', 0.021080182147252737),\n",
       " ('crafted', 0.020979194953745093),\n",
       " ('more', 0.020933797343193814),\n",
       " ('glued', 0.02093198872193016),\n",
       " ('insanity', 0.020914935599101157),\n",
       " ('thoroughly', 0.02090566154225278),\n",
       " ('eyes', 0.020868013291281098),\n",
       " ('jr', 0.020865268971014532),\n",
       " ('dramas', 0.020836398428109235),\n",
       " ('follows', 0.0208149371467084),\n",
       " ('situation', 0.020814821105666476),\n",
       " ('understood', 0.02074967709247018),\n",
       " ('face', 0.02070173946494506),\n",
       " ('albeit', 0.020680340389878413),\n",
       " ('memorable', 0.020608260124115527),\n",
       " ('accurate', 0.02058530303340875),\n",
       " ('under', 0.02057443069837423),\n",
       " ('arthur', 0.020562083939889463),\n",
       " ('elderly', 0.020545350471808117),\n",
       " ('opinion', 0.020539570922797776),\n",
       " ('whoopi', 0.020515675744150082),\n",
       " ('helped', 0.02047624233713053),\n",
       " ('detract', 0.02044380769834168),\n",
       " ('flawed', 0.020436371691432337),\n",
       " ('unusually', 0.020433523835905326),\n",
       " ('performing', 0.020396957567555725),\n",
       " ('smooth', 0.020347681451465364),\n",
       " ('magnificent', 0.02033463768810284),\n",
       " ('desperation', 0.020287768999057227),\n",
       " ('lose', 0.02027753568325787),\n",
       " ('satisfying', 0.02025152711027206),\n",
       " ('friend', 0.02022765102039893),\n",
       " ('kudos', 0.020201477326926613),\n",
       " ('breaking', 0.0201178615198543),\n",
       " ('elephant', 0.020115783447057053),\n",
       " ('colors', 0.02011215598776488),\n",
       " ('willing', 0.020087728040224344),\n",
       " ('fresh', 0.020054019123593753),\n",
       " ('offers', 0.020003415308141065),\n",
       " ('provides', 0.020002909565985043),\n",
       " ('guilt', 0.01998791797065957),\n",
       " ('shouldn', 0.019907879458024358),\n",
       " ('japan', 0.019906368589571694),\n",
       " ('secrets', 0.01987697610481439),\n",
       " ('obligatory', 0.01978966543184042),\n",
       " ('dvd', 0.019782796187823453),\n",
       " ('tale', 0.019752149872839877),\n",
       " ('since', 0.019726258912690305),\n",
       " ('roles', 0.01971049550520798),\n",
       " ('breathtaking', 0.01970582413566054),\n",
       " ('ground', 0.019687236524961883),\n",
       " ('higher', 0.019670526139537563),\n",
       " ('jean', 0.019665400087401596),\n",
       " ('rich', 0.01965309571666073),\n",
       " ('right', 0.019629293580435775),\n",
       " ('stone', 0.01961059590566911),\n",
       " ('lives', 0.01961034893671014),\n",
       " ('it', 0.0195420023032776),\n",
       " ('essential', 0.019533860093920406),\n",
       " ('tend', 0.019523404457496816),\n",
       " ('places', 0.019510216587218014),\n",
       " ('recommend', 0.019506211559818132),\n",
       " ('loy', 0.01948114856097092),\n",
       " ('tell', 0.019450286669268752),\n",
       " ('challenge', 0.019374490591710935),\n",
       " ('fiction', 0.01935060149873539),\n",
       " ('able', 0.019340445094151434),\n",
       " ('animated', 0.01933306962526709),\n",
       " ('complain', 0.01933202879655011),\n",
       " ('deeper', 0.019318681931941167),\n",
       " ('blew', 0.01930445439543013),\n",
       " ('seeing', 0.01930244244503552),\n",
       " ('release', 0.019209904006239127),\n",
       " ('unfolds', 0.019184703456013683),\n",
       " ('boys', 0.019177414753158397),\n",
       " ('favorites', 0.019160378141489527),\n",
       " ('throughout', 0.01913689284569068),\n",
       " ('marvelous', 0.019110015321943574),\n",
       " ('relax', 0.019044075162625466),\n",
       " ('desire', 0.01901611720460599),\n",
       " ('end', 0.019014420138293207),\n",
       " ('questions', 0.018977699968684834),\n",
       " ('man', 0.018956744494720224),\n",
       " ('rea', 0.018928733395777456),\n",
       " ('comments', 0.01892387070836308),\n",
       " ('vengeance', 0.018908638777923936),\n",
       " ('brian', 0.01890687632302359),\n",
       " ('learned', 0.018899947923704453),\n",
       " ('lovely', 0.01885498046469865),\n",
       " ('seasons', 0.018852496578683816),\n",
       " ('shines', 0.018827509959493262),\n",
       " ('justice', 0.018827310862034652),\n",
       " ('succeeds', 0.01877699852231277),\n",
       " ('discovered', 0.018766802216817063),\n",
       " ('touch', 0.018762806738861486),\n",
       " ('white', 0.01874322569741419),\n",
       " ('bitter', 0.01872470199991289),\n",
       " ('knows', 0.018719063288744286),\n",
       " ('gene', 0.018660060796556237),\n",
       " ('mainstream', 0.018654252436913918),\n",
       " ('raw', 0.018609728881254835),\n",
       " ('focus', 0.01860507830549493),\n",
       " ('won', 0.018597537876871652),\n",
       " ('ve', 0.01856016258137929),\n",
       " ('million', 0.018514133006256914),\n",
       " ('attention', 0.01840654768263712),\n",
       " ('river', 0.018403383531225687),\n",
       " ('classics', 0.018375185367387362),\n",
       " ('quirky', 0.018358100535754616),\n",
       " ('although', 0.01835025297382191),\n",
       " ('september', 0.018345012211358886),\n",
       " ('emotional', 0.018327165070951744),\n",
       " ('events', 0.018324554475918117),\n",
       " ('released', 0.018304767183625545),\n",
       " ('thus', 0.018302709016086077),\n",
       " ('rules', 0.018298967789718682),\n",
       " ('trilogy', 0.018261985922288504),\n",
       " ('jackie', 0.018261017705562568),\n",
       " ('country', 0.01824898410762878),\n",
       " ('find', 0.01822000112024736),\n",
       " ('sure', 0.018205281970545904),\n",
       " ('overlooked', 0.01817364459210739),\n",
       " ('sensitive', 0.018173518786609145),\n",
       " ('harsh', 0.018143998075916393),\n",
       " ('chair', 0.018127987063468104),\n",
       " ('neatly', 0.018123044612179437),\n",
       " ('round', 0.018082305853658366),\n",
       " ('adult', 0.01806071885938954),\n",
       " ('strength', 0.018042558269708915),\n",
       " ('aunt', 0.018028313353173654),\n",
       " ('description', 0.017997557340833963),\n",
       " ('perspective', 0.01797476119333969),\n",
       " ('closer', 0.01794506642390804),\n",
       " ('extra', 0.017934760731343098),\n",
       " ('hit', 0.01791074018169035),\n",
       " ('tough', 0.017904509470376244),\n",
       " ('work', 0.017882494289916093),\n",
       " ('captivating', 0.01787507230892095),\n",
       " ('swim', 0.01785335427201484),\n",
       " ('holmes', 0.017846058193393115),\n",
       " ('unlikely', 0.01784383969945212),\n",
       " ('fears', 0.017838067451752794),\n",
       " ('nominated', 0.01783743930452058),\n",
       " ('neat', 0.017823068474913186),\n",
       " ('discovers', 0.017801301834152457),\n",
       " ('paris', 0.017798057884200073),\n",
       " ('streets', 0.017746147480597607),\n",
       " ('realism', 0.017729724930388043),\n",
       " ('travel', 0.017694257020940296),\n",
       " ('keep', 0.01768440008909011),\n",
       " ('anyway', 0.01767599540091947),\n",
       " ('realizes', 0.017618932935696142),\n",
       " ('variety', 0.01761848760482766),\n",
       " ('chief', 0.017603963834362822),\n",
       " ('broke', 0.01760165747619495),\n",
       " ('craven', 0.017597613499935324),\n",
       " ('moves', 0.017559744221771686),\n",
       " ('see', 0.017554713803040196),\n",
       " ('intellectual', 0.01753734932923513),\n",
       " ('normally', 0.017511237908563508),\n",
       " ('technique', 0.01750226507783019),\n",
       " ('dancer', 0.01750139536564526),\n",
       " ('awe', 0.01746744664064139),\n",
       " ('technology', 0.017414969148737188),\n",
       " ('kelly', 0.017380794671638247),\n",
       " ('particular', 0.01738050333910924),\n",
       " ('awards', 0.01734306737430509),\n",
       " ('twisted', 0.0173427316555122),\n",
       " ('manager', 0.017337683585341684),\n",
       " ('fantasy', 0.017314736380004712),\n",
       " ('blake', 0.01728296399055219),\n",
       " ('criticism', 0.017279558676803676),\n",
       " ('identify', 0.017277471199843665),\n",
       " ('collection', 0.01725353305226093),\n",
       " ('sidney', 0.017239120845031552),\n",
       " ('ironic', 0.01722580988412088),\n",
       " ('score', 0.01722304686926349),\n",
       " ('charm', 0.017204164112517878),\n",
       " ('lonely', 0.01719297260751196),\n",
       " ('recall', 0.017189512282670294),\n",
       " ('dream', 0.017185607849471297),\n",
       " ('known', 0.0171693414730458),\n",
       " ('hoffman', 0.017123937023014235),\n",
       " ('answers', 0.017112374531695264),\n",
       " ('taking', 0.017102244694823306),\n",
       " ('color', 0.017086755659474463),\n",
       " ('existed', 0.01708449183478003),\n",
       " ('mel', 0.01708064412549848),\n",
       " ('treats', 0.017076365809061668),\n",
       " ('kennedy', 0.017063054110179415),\n",
       " ('millionaire', 0.01705812018153407),\n",
       " ('stewart', 0.017017863935395117),\n",
       " ('soon', 0.017016949690113505),\n",
       " ('style', 0.016978446616527428),\n",
       " ('urban', 0.016961773741888567),\n",
       " ('sides', 0.016958377563876286),\n",
       " ('nicely', 0.016956584044665053),\n",
       " ('survive', 0.01695320106620355),\n",
       " ('contrast', 0.0169490177889077),\n",
       " ('granted', 0.0169485007594208),\n",
       " ('wes', 0.016856895803564042),\n",
       " ('heroic', 0.016849533387674566),\n",
       " ('sadness', 0.016836182986070532),\n",
       " ('faults', 0.016833966998505423),\n",
       " ('ladies', 0.016818146836646248),\n",
       " ('walter', 0.0168136452096148),\n",
       " ('exceptional', 0.0168102429853373),\n",
       " ('dangerous', 0.01679605800803244),\n",
       " ('fan', 0.016737120507724374),\n",
       " ('witch', 0.016717085914917346),\n",
       " ('occasionally', 0.016711349636820458),\n",
       " ('movies', 0.016676687954063636),\n",
       " ('celebration', 0.01666419756672374),\n",
       " ('castle', 0.016661909651854562),\n",
       " ('catch', 0.016647995152024708),\n",
       " ('its', 0.01663930294126231),\n",
       " ('tribute', 0.01662961792791879),\n",
       " ('jimmy', 0.016625132101972973),\n",
       " ('bravo', 0.016616754156460044),\n",
       " ('enjoying', 0.016613140144305684),\n",
       " ('bus', 0.01659315750177811),\n",
       " ('documentary', 0.01656465146128537),\n",
       " ('frightening', 0.016559987706802774),\n",
       " ('guilty', 0.01653611025366424),\n",
       " ('slightly', 0.01652642172419935),\n",
       " ('is', 0.016511509443399762),\n",
       " ('chan', 0.01650720451500666),\n",
       " ('mixed', 0.01650684756731141),\n",
       " ('curious', 0.01650648839456457),\n",
       " ('spirit', 0.01650297704409909),\n",
       " ('pleased', 0.01648726112939025),\n",
       " ('most', 0.0164767593332141),\n",
       " ('chemistry', 0.01642535634398906),\n",
       " ('age', 0.016410666314929868),\n",
       " ('understanding', 0.01634569620294557),\n",
       " ('marie', 0.016341053241072705),\n",
       " ('dreams', 0.0163326720135563),\n",
       " ('again', 0.016287090973937757),\n",
       " ('union', 0.01628237935902256),\n",
       " ('spy', 0.01627815492378592),\n",
       " ('presented', 0.016273043238663482),\n",
       " ('steele', 0.016260993339006803),\n",
       " ('lay', 0.016259995458797864),\n",
       " ('plenty', 0.016247194189832836),\n",
       " ('horrors', 0.01624602298030559),\n",
       " ('black', 0.016223176851856813),\n",
       " ('comedy', 0.016220408022010597),\n",
       " ('winner', 0.01622031885739841),\n",
       " ('african', 0.01621445660979496),\n",
       " ('drummer', 0.016178152199513927),\n",
       " ('entertainment', 0.01617311200789097),\n",
       " ('delivers', 0.016166599465683072),\n",
       " ('stays', 0.016139476352793777),\n",
       " ('america', 0.0161088963411115),\n",
       " ('disappoint', 0.016066615933996446),\n",
       " ('gorgeous', 0.01606235016681505),\n",
       " ('sisters', 0.016060080355840688),\n",
       " ('subsequent', 0.01604357420387397),\n",
       " ('cerebral', 0.016039058904070022),\n",
       " ('french', 0.016038425317363207),\n",
       " ('perfection', 0.01603315486934693),\n",
       " ('likable', 0.01602171339612458),\n",
       " ('warm', 0.016019144095827345),\n",
       " ('studio', 0.016007232818464577),\n",
       " ('late', 0.01599792335045708),\n",
       " ('reality', 0.015978872249423723),\n",
       " ('showed', 0.015938750644323922),\n",
       " ('figures', 0.01592744660892323),\n",
       " ('ever', 0.015926454600790646),\n",
       " ('italy', 0.015909186780479367),\n",
       " ('accustomed', 0.015906246911558286),\n",
       " ('into', 0.01589217368161797),\n",
       " ('he', 0.01586623993209236),\n",
       " ('journey', 0.015817191390925505),\n",
       " ('waters', 0.01580090687882631),\n",
       " ('bill', 0.015785976148791327),\n",
       " ('cousin', 0.01578438271080166),\n",
       " ('explores', 0.01576875634556959),\n",
       " ('originally', 0.01576601646531542),\n",
       " ('astonishing', 0.015741175347778344),\n",
       " ('mouse', 0.015739473070555076),\n",
       " ('affect', 0.015719798460443267),\n",
       " ('authenticity', 0.015716491136675288),\n",
       " ('key', 0.015706372736941265),\n",
       " ('authorities', 0.0157001119462985),\n",
       " ('fortunately', 0.015676427069879848),\n",
       " ('notes', 0.01566838856776548),\n",
       " ('disagree', 0.01565982223146424),\n",
       " ('advanced', 0.015653464856497615),\n",
       " ('contribution', 0.01565191938148954),\n",
       " ('flaw', 0.01563062317548556),\n",
       " ('burning', 0.01559395115259037),\n",
       " ('scoop', 0.015580911014213496),\n",
       " ('levels', 0.015579506047588166),\n",
       " ('dead', 0.015575945832152275),\n",
       " ('reveals', 0.015552631094426448),\n",
       " ('explicit', 0.015535052542383247),\n",
       " ('fault', 0.015532818014787661),\n",
       " ('requires', 0.015440001642516231),\n",
       " ('way', 0.015434313286947603),\n",
       " ('waitress', 0.015433929845739228),\n",
       " ('vividly', 0.01539920937531222),\n",
       " ('truman', 0.015388667015530336),\n",
       " ('leslie', 0.015388355420398661),\n",
       " ('cool', 0.015362419182460986),\n",
       " ('i', 0.015358846209804487),\n",
       " ('dated', 0.015351894934707871),\n",
       " ('ruthless', 0.015347223840634985),\n",
       " ('anymore', 0.015327840988573722),\n",
       " ('batman', 0.015325445892906485),\n",
       " ('york', 0.015323650797282741),\n",
       " ('expressions', 0.015290943599335204),\n",
       " ('terms', 0.015285161966075786),\n",
       " ('sunday', 0.015279982329904832),\n",
       " ('chinese', 0.015240680418926664),\n",
       " ('done', 0.015230733309302684),\n",
       " ('behind', 0.015219079842199848),\n",
       " ('event', 0.015214794169662826),\n",
       " ('chamberlain', 0.01521408274142719),\n",
       " ('mysteries', 0.015204556759409923),\n",
       " ('manages', 0.015203486934632013),\n",
       " ('simpsons', 0.015191849812926223),\n",
       " ('mine', 0.015191085212402701),\n",
       " ('canadian', 0.015117611742208797),\n",
       " ('purple', 0.015100505661562473),\n",
       " ('website', 0.015095063701722864),\n",
       " ('master', 0.015091528696557662),\n",
       " ('charming', 0.015088362486196553),\n",
       " ('joe', 0.01508192017787814),\n",
       " ('reservations', 0.015077821343474084),\n",
       " ('fever', 0.01507687358398372),\n",
       " ('covers', 0.015047233453258816),\n",
       " ('madness', 0.015030361859657216),\n",
       " ('glimpse', 0.014991086926970954),\n",
       " ('pilot', 0.014978443271049663),\n",
       " ('johansson', 0.014975808461544405),\n",
       " ('explains', 0.014970512080227464),\n",
       " ('excellently', 0.014970388571598848),\n",
       " ('hawke', 0.014969750109931354),\n",
       " ('genuinely', 0.014947672770702572),\n",
       " ('often', 0.014942833143544457),\n",
       " ('cube', 0.01493992870936536),\n",
       " ('clean', 0.014937853229023534),\n",
       " ('ensemble', 0.014913656909087868),\n",
       " ('referred', 0.014910582069880152),\n",
       " ('replies', 0.014907131594945566),\n",
       " ('disease', 0.014895193110452164),\n",
       " ('wish', 0.014892245549307048),\n",
       " ('logical', 0.014888665766304068),\n",
       " ('nathan', 0.014869928851670402),\n",
       " ('aware', 0.014869867112894508),\n",
       " ('exciting', 0.01482313969498063),\n",
       " ('gone', 0.014821497224651536),\n",
       " ('critics', 0.01481855938390736),\n",
       " ('split', 0.01478811703298561),\n",
       " ('series', 0.014770708703162194),\n",
       " ('henry', 0.014757735101897457),\n",
       " ('prisoners', 0.014747710184003872),\n",
       " ('sentenced', 0.014746219906503842),\n",
       " ('laughing', 0.014722151818909786),\n",
       " ('president', 0.014671766779490556),\n",
       " ('list', 0.014666775185665172),\n",
       " ('ones', 0.014658997854109332),\n",
       " ('information', 0.01465168716978421),\n",
       " ('bonus', 0.014648059891508164),\n",
       " ('chicago', 0.01463176987266761),\n",
       " ('someday', 0.014629340475262572),\n",
       " ('splendid', 0.014609703424340655),\n",
       " ('surprises', 0.014608824054662461),\n",
       " ('sentimental', 0.014591361045287956),\n",
       " ('admit', 0.014588098910742794),\n",
       " ('previously', 0.014571223247118632),\n",
       " ('conveys', 0.014567143509152128),\n",
       " ('prominent', 0.014547363114083276),\n",
       " ('born', 0.014536990751946692),\n",
       " ('necessary', 0.014533225697989451),\n",
       " ('yes', 0.014531704633026984),\n",
       " ('marvel', 0.014527554209112416),\n",
       " ('initially', 0.014510187714555972),\n",
       " ('jake', 0.014502509408478866),\n",
       " ('matters', 0.014497730426084203),\n",
       " ('lucas', 0.014496736417950705),\n",
       " ('stories', 0.014475382661229962),\n",
       " ('happy', 0.014471040644253799),\n",
       " ('improvement', 0.014459225025278402),\n",
       " ('anger', 0.014440696969299307),\n",
       " ('hong', 0.01441202073276324),\n",
       " ('devotion', 0.014406165594180759),\n",
       " ('infamous', 0.014402483161136861),\n",
       " ('sir', 0.014390585849942563),\n",
       " ('fashioned', 0.01437649516309287),\n",
       " ('whenever', 0.014311984840844724),\n",
       " ('facing', 0.014311813694297503),\n",
       " ('spin', 0.014300937890947243),\n",
       " ('clear', 0.014297831903635046),\n",
       " ('verhoeven', 0.014290838087095133),\n",
       " ('onto', 0.014287704198288394),\n",
       " ('sheriff', 0.014266680346279263),\n",
       " ('boy', 0.0142383932121725),\n",
       " ('felix', 0.014236371593101715),\n",
       " ('what', 0.01423119672812785),\n",
       " ('site', 0.01421283932921703),\n",
       " ('hits', 0.014208508715996899),\n",
       " ('convincingly', 0.014165838532387452),\n",
       " ('adventures', 0.014158492204346288),\n",
       " ('multiple', 0.014150723728410523),\n",
       " ('wrapped', 0.014118759103459125),\n",
       " ('reveal', 0.014076510653822798),\n",
       " ('toby', 0.014075221493111766),\n",
       " ('months', 0.014061986005374704),\n",
       " ('comedies', 0.014050301808876061),\n",
       " ('shot', 0.01403198745527191),\n",
       " ('holds', 0.014023504904484202),\n",
       " ('weeks', 0.014002257803042345),\n",
       " ('window', 0.013985434541614838),\n",
       " ('received', 0.013983301709629928),\n",
       " ('him', 0.013968181093938305),\n",
       " ('court', 0.01396435205819353),\n",
       " ('double', 0.013960483190947268),\n",
       " ('refuses', 0.013957613385590664),\n",
       " ('stand', 0.013948813859221348),\n",
       " ('shocked', 0.013935157243261918),\n",
       " ('powell', 0.01393406244197702),\n",
       " ('brutal', 0.013924129605946696),\n",
       " ('among', 0.01391315676529295),\n",
       " ('prostitute', 0.0139117652746318),\n",
       " ('nine', 0.013882343344720901),\n",
       " ('timeless', 0.01385827439549941),\n",
       " ('likes', 0.013844971514262233),\n",
       " ('kurosawa', 0.013820064338774897),\n",
       " ('fact', 0.013814297186034375),\n",
       " ('ass', 0.013813899781949805),\n",
       " ('deanna', 0.013799520782801162),\n",
       " ('almost', 0.013791517357271337),\n",
       " ('technicolor', 0.013790541990859),\n",
       " ('adventure', 0.01378299990704707),\n",
       " ('gerard', 0.013776140434137598),\n",
       " ('analysis', 0.013764039325045382),\n",
       " ('mid', 0.013747853289146201),\n",
       " ('stanwyck', 0.01373892789177926),\n",
       " ('mann', 0.01372691564569188),\n",
       " ('stuart', 0.013700229069235789),\n",
       " ('reluctantly', 0.013697113976504024),\n",
       " ('humanity', 0.013690830736911054),\n",
       " ('classical', 0.013688949911986584),\n",
       " ('health', 0.01368478464061345),\n",
       " ('edie', 0.013683859176013943),\n",
       " ('british', 0.013666460250876441),\n",
       " ('primary', 0.0136617947140339),\n",
       " ('coaster', 0.013660631014138403),\n",
       " ('explore', 0.013656042478726909),\n",
       " ('china', 0.013638756081011156),\n",
       " ('advantage', 0.013631698822745404),\n",
       " ('protagonists', 0.013627593648932778),\n",
       " ('partly', 0.013617059618125364),\n",
       " ('artist', 0.013597123465502837),\n",
       " ('terrifying', 0.013581203319898157),\n",
       " ('scarlett', 0.013567078625941566),\n",
       " ('mesmerizing', 0.013547816899479412),\n",
       " ('prince', 0.013541105943095601),\n",
       " ('weird', 0.013535346249579566),\n",
       " ('vance', 0.013518150392608123),\n",
       " ('collect', 0.013513303578887657),\n",
       " ('humour', 0.013508890166677966),\n",
       " ('doc', 0.013507286431402924),\n",
       " ('history', 0.013506120200788268),\n",
       " ('miss', 0.013498187990897423),\n",
       " ('angles', 0.013497507265665433),\n",
       " ('dealers', 0.013493607234383899),\n",
       " ('mass', 0.01347232862593287),\n",
       " ('paramount', 0.01346754666234452),\n",
       " ('musicians', 0.013464517138686277),\n",
       " ('jackman', 0.013441428735872105),\n",
       " ('cheer', 0.013440230376864142),\n",
       " ('aired', 0.013427957547366861),\n",
       " ('personal', 0.01342241888767008),\n",
       " ('become', 0.013415910991211788),\n",
       " ('wang', 0.01340665576427057),\n",
       " ('unforgettable', 0.013405651085753995),\n",
       " ('theme', 0.013397995857105523),\n",
       " ('satisfy', 0.013361012634637447),\n",
       " ('beginning', 0.013353575498360071),\n",
       " ('tongue', 0.01333258793733475),\n",
       " ('ran', 0.013322580056022439),\n",
       " ('vh', 0.013321694862247338),\n",
       " ('april', 0.013317958082689022),\n",
       " ('cracking', 0.013316482654851873),\n",
       " ('hilariously', 0.013312111975215814),\n",
       " ('addictive', 0.01330405634128252),\n",
       " ('factory', 0.013302408850101517),\n",
       " ('bloom', 0.013287106893282025),\n",
       " ('outcome', 0.013278893812795744),\n",
       " ('startling', 0.013276469703553513),\n",
       " ('portrait', 0.013273055100999269),\n",
       " ('adapted', 0.013258514308676845),\n",
       " ('raines', 0.013257908724754863),\n",
       " ('sky', 0.013252502620889903),\n",
       " ('earlier', 0.013233110743632572),\n",
       " ('atlantis', 0.013228188610144557),\n",
       " ('delirious', 0.013226874818125447),\n",
       " ('titanic', 0.01320563340114447),\n",
       " ('nevertheless', 0.013198200611184947),\n",
       " ('proved', 0.01318976035838448),\n",
       " ('denzel', 0.013188430841614768),\n",
       " ('pleasant', 0.013180077348723354),\n",
       " ('horses', 0.013178651568029463),\n",
       " ('about', 0.013166154528006858),\n",
       " ('astounding', 0.01316169833722681),\n",
       " ('savage', 0.013154100553759929),\n",
       " ('winning', 0.01315324670837967),\n",
       " ('rose', 0.013145586701309771),\n",
       " ('fitting', 0.013133578254330341),\n",
       " ('compared', 0.013131693803520052),\n",
       " ('took', 0.013119343481498978),\n",
       " ('masterson', 0.013112762074217894),\n",
       " ('owner', 0.013108690454819136),\n",
       " ('delight', 0.013107278788311014),\n",
       " ('conventions', 0.013106039770696052),\n",
       " ('natali', 0.013094964441143216),\n",
       " ('message', 0.013093664295113425),\n",
       " ('stood', 0.013090122718303438),\n",
       " ('sailor', 0.013058959170423452),\n",
       " ('ida', 0.01305884295025624),\n",
       " ('escaping', 0.013052723624706782),\n",
       " ('top', 0.013047466741024428),\n",
       " ('louis', 0.013046238442637017),\n",
       " ('peace', 0.013040907918892309),\n",
       " ('several', 0.013028244887060284),\n",
       " ('info', 0.013023754625550185),\n",
       " ('graphics', 0.013020850288881853),\n",
       " ('reflection', 0.013019243823940103),\n",
       " ('slimy', 0.013014377070231843),\n",
       " ('elvira', 0.013009811638957066),\n",
       " ('andre', 0.013000047313446743),\n",
       " ('kong', 0.012999080313300522),\n",
       " ('mayor', 0.012994758409723577),\n",
       " ('punishment', 0.012988264949614949),\n",
       " ('morris', 0.012983710119604966),\n",
       " ('hall', 0.012981593609354816),\n",
       " ('match', 0.012980233583057332),\n",
       " ('bleak', 0.012972505086304056),\n",
       " ('lindy', 0.01297224893312126),\n",
       " ('sequence', 0.012964435808713565),\n",
       " ('learn', 0.01293884897008334),\n",
       " ('happen', 0.01293283638787374),\n",
       " ('john', 0.012929524979001683),\n",
       " ('gothic', 0.012926957011734876),\n",
       " ('wider', 0.012920985981480958),\n",
       " ('popular', 0.012891690509844069),\n",
       " ('diverse', 0.012875263936567814),\n",
       " ('compare', 0.012869395292065208),\n",
       " ('brooklyn', 0.012852986243263927),\n",
       " ('broadcast', 0.012839574692097629),\n",
       " ('zane', 0.01283430295770914),\n",
       " ('andrew', 0.012824020940615256),\n",
       " ('finely', 0.012822716004015864),\n",
       " ('confronted', 0.012817523686608627),\n",
       " ('going', 0.012809762839304963),\n",
       " ('likewise', 0.012804639349082513),\n",
       " ('breath', 0.01279013265941791),\n",
       " ('building', 0.012789809704793875),\n",
       " ('suggesting', 0.012780624321169352),\n",
       " ('contemporary', 0.012772749462937511),\n",
       " ('midnight', 0.012766963563112074),\n",
       " ('victoria', 0.012756422131580531),\n",
       " ('lasting', 0.012752424415642588),\n",
       " ('kitty', 0.012751468371946007),\n",
       " ('continued', 0.012744325456485404),\n",
       " ('indian', 0.012712962842718676),\n",
       " ('subplots', 0.012709887814283906),\n",
       " ('douglas', 0.012693830679455908),\n",
       " ('explosions', 0.012692697593201852),\n",
       " ('bond', 0.012689802823687823),\n",
       " ('delightfully', 0.012669417460922618),\n",
       " ('understated', 0.01266937431278935),\n",
       " ('greater', 0.01266458039602017),\n",
       " ('sailing', 0.012662424581282425),\n",
       " ('images', 0.012661803048859869),\n",
       " ('copy', 0.012624649645734159),\n",
       " ('seat', 0.012610464273152513),\n",
       " ('eleven', 0.012602533659978892),\n",
       " ('riveting', 0.012591829460094522),\n",
       " ('boiled', 0.012588863529638759),\n",
       " ('academy', 0.012581996178142985),\n",
       " ('whilst', 0.012569841653295645),\n",
       " ('heaven', 0.012547361621330926),\n",
       " ('fruit', 0.012543513029693257),\n",
       " ('reviewer', 0.012534273375083886),\n",
       " ('cost', 0.012529643005796613),\n",
       " ('week', 0.012522845015008274),\n",
       " ('intriguing', 0.012508687653306351),\n",
       " ('streak', 0.01250775238520855),\n",
       " ('san', 0.01250213005821793),\n",
       " ('awareness', 0.01247644644201245),\n",
       " ('catching', 0.012467108595451533),\n",
       " ('kicks', 0.012457714930570584),\n",
       " ('complexities', 0.012454362663082471),\n",
       " ('draws', 0.012447753285125908),\n",
       " ('easily', 0.012444885855614894),\n",
       " ('ealing', 0.012444339255708925),\n",
       " ('psychopath', 0.012431259926282271),\n",
       " ('skin', 0.012424248540973567),\n",
       " ('creative', 0.01238671345249154),\n",
       " ('recognition', 0.01235402580143942),\n",
       " ('downey', 0.012348698765161134),\n",
       " ('symbolism', 0.012329925038271329),\n",
       " ('touches', 0.012328013470751464),\n",
       " ('everyday', 0.012324934809895896),\n",
       " ('achieves', 0.012314898707483491),\n",
       " ('outcast', 0.012313662230219676),\n",
       " ('overwhelmed', 0.012306633138869478),\n",
       " ...]"
      ]
     },
     "execution_count": 81,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "get_most_similar_words(\"excellent\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 82,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "[('worst', 0.16966107259049848),\n",
       " ('awful', 0.12026847019691245),\n",
       " ('waste', 0.11945367265311005),\n",
       " ('poor', 0.0927588875744355),\n",
       " ('terrible', 0.09142538719772794),\n",
       " ('dull', 0.08420927167822362),\n",
       " ('poorly', 0.08124154451604204),\n",
       " ('disappointment', 0.08006475962136872),\n",
       " ('fails', 0.07859977372333751),\n",
       " ('disappointing', 0.07733948548032336),\n",
       " ('boring', 0.07712785874801288),\n",
       " ('unfortunately', 0.07550244970585906),\n",
       " ('worse', 0.07060183536419466),\n",
       " ('mess', 0.0705642996235904),\n",
       " ('stupid', 0.06948482283254304),\n",
       " ('badly', 0.06688890366622857),\n",
       " ('annoying', 0.06568702190337414),\n",
       " ('bad', 0.06309381453757215),\n",
       " ('save', 0.06288059749586575),\n",
       " ('disappointed', 0.06269235381207289),\n",
       " ('wasted', 0.06138718302805127),\n",
       " ('supposed', 0.060985452957725166),\n",
       " ('horrible', 0.06012177233938012),\n",
       " ('laughable', 0.05869840628546764),\n",
       " ('crap', 0.05810452866788458),\n",
       " ('basically', 0.05721884036963616),\n",
       " ('nothing', 0.0571582200430342),\n",
       " ('ridiculous', 0.056905481068931445),\n",
       " ('lacks', 0.055766565889465436),\n",
       " ('lame', 0.05561600905811018),\n",
       " ('avoid', 0.055518726073197196),\n",
       " ('unless', 0.05420892621294075),\n",
       " ('script', 0.053948359467048485),\n",
       " ('failed', 0.053413930550009155),\n",
       " ('pointless', 0.05285553154689413),\n",
       " ('oh', 0.052761580933176816),\n",
       " ('effort', 0.050773747127292324),\n",
       " ('guess', 0.05037957642007653),\n",
       " ('minutes', 0.049784532804242186),\n",
       " ('wooden', 0.04945310838072717),\n",
       " ('redeeming', 0.049182869114721736),\n",
       " ('seems', 0.04907962515466977),\n",
       " ('instead', 0.047957645123532275),\n",
       " ('weak', 0.04649638737476567),\n",
       " ('pathetic', 0.04609974114971575),\n",
       " ('looks', 0.04579653673024485),\n",
       " ('hoping', 0.045082242887577034),\n",
       " ('wonder', 0.04466979178093461),\n",
       " ('forgettable', 0.042854349251871725),\n",
       " ('silly', 0.04223782968727001),\n",
       " ('attempt', 0.04170629994137353),\n",
       " ('predictable', 0.0415144424385681),\n",
       " ('someone', 0.04150611902733733),\n",
       " ('sorry', 0.040868877281533364),\n",
       " ('might', 0.04044568350068835),\n",
       " ('slow', 0.04034686910703495),\n",
       " ('painful', 0.040220039039613256),\n",
       " ('thin', 0.04006264225377786),\n",
       " ('mediocre', 0.03940716537757738),\n",
       " ('garbage', 0.039310979440981116),\n",
       " ('money', 0.0389079733136405),\n",
       " ('none', 0.038300807052230955),\n",
       " ('bland', 0.03806224605708505),\n",
       " ('couldn', 0.03801666421895793),\n",
       " ('either', 0.03773883307034197),\n",
       " ('unfunny', 0.0370766298050445),\n",
       " ('entire', 0.036642119399463165),\n",
       " ('cheap', 0.0365168008025256),\n",
       " ('honestly', 0.03621204154379783),\n",
       " ('mildly', 0.035744850608185635),\n",
       " ('total', 0.035560454471013095),\n",
       " ('neither', 0.035415946043548564),\n",
       " ('making', 0.03524431506098559),\n",
       " ('problem', 0.03508825103456244),\n",
       " ('flat', 0.03451894703874707),\n",
       " ('bizarre', 0.03450946069452115),\n",
       " ('group', 0.03433588352858678),\n",
       " ('dreadful', 0.034287618511331865),\n",
       " ('ludicrous', 0.03415964932381605),\n",
       " ('decent', 0.03377158578786895),\n",
       " ('clich', 0.03375144463172057),\n",
       " ('daughter', 0.03373272585838488),\n",
       " ('bored', 0.03362287957285255),\n",
       " ('horror', 0.03346412061995682),\n",
       " ('writing', 0.0334379139167568),\n",
       " ('skip', 0.03343063985049117),\n",
       " ('absurd', 0.03315417353016331),\n",
       " ('barely', 0.03265341682751771),\n",
       " ('idea', 0.03258401317566322),\n",
       " ('wasn', 0.03248120796627206),\n",
       " ('fake', 0.032136435098031546),\n",
       " ('believe', 0.03167785893580079),\n",
       " ('uninteresting', 0.03152681591586714),\n",
       " ('reason', 0.03139071526027054),\n",
       " ('scenes', 0.031216362935389166),\n",
       " ('alright', 0.03104688311395626),\n",
       " ('body', 0.030999982945986663),\n",
       " ('no', 0.030917695380560432),\n",
       " ('insult', 0.03080845014635594),\n",
       " ('mst', 0.030527916471397864),\n",
       " ('nowhere', 0.030352177599338295),\n",
       " ('lousy', 0.030160195468380797),\n",
       " ('didn', 0.030115903194061412),\n",
       " ('interest', 0.02988811846877113),\n",
       " ('half', 0.02981324611505726),\n",
       " ('lee', 0.029804235955718652),\n",
       " ('dimensional', 0.029562861996904034),\n",
       " ('unconvincing', 0.029322607679950242),\n",
       " ('left', 0.02932240878703054),\n",
       " ('sex', 0.02929674847608216),\n",
       " ('even', 0.02922520945092342),\n",
       " ('far', 0.02919261833429456),\n",
       " ('tries', 0.029004001132703527),\n",
       " ('anything', 0.028988097743501116),\n",
       " ('trying', 0.02891947722846512),\n",
       " ('accent', 0.028779542310252593),\n",
       " ('nudity', 0.02866265495326605),\n",
       " ('apparently', 0.02829162694151792),\n",
       " ('zombies', 0.028178583120430676),\n",
       " ('sense', 0.02816674053475876),\n",
       " ('incoherent', 0.027988926190862524),\n",
       " ('something', 0.027986519420278216),\n",
       " ('tedious', 0.027952212405329524),\n",
       " ('wrong', 0.02783194755736562),\n",
       " ('were', 0.027825695799985423),\n",
       " ('endless', 0.027824591794431468),\n",
       " ('turkey', 0.027624266205058486),\n",
       " ('zombie', 0.02754333383511086),\n",
       " ('appears', 0.027469840878483236),\n",
       " ('embarrassing', 0.027425437142424354),\n",
       " ('walked', 0.027411768647042714),\n",
       " ('premise', 0.027346072285964182),\n",
       " ('ok', 0.02733300835623201),\n",
       " ('result', 0.02731255865319191),\n",
       " ('complete', 0.027247564384243434),\n",
       " ('t', 0.027186737465610233),\n",
       " ('least', 0.026949072632017287),\n",
       " ('was', 0.026917906772065278),\n",
       " ('unwatchable', 0.026829458762459384),\n",
       " ('sat', 0.026806511532143463),\n",
       " ('to', 0.026801902698524095),\n",
       " ('sadly', 0.026753380035391502),\n",
       " ('christmas', 0.026735555962199217),\n",
       " ('gore', 0.026670161630608397),\n",
       " ('mother', 0.02661269698743775),\n",
       " ('aspects', 0.0265832376152638),\n",
       " ('amateurish', 0.02656515929117569),\n",
       " ('below', 0.026548271016778143),\n",
       " ('stupidity', 0.026460990221946926),\n",
       " ('appeal', 0.026396596713420973),\n",
       " ('trite', 0.026331168557051407),\n",
       " ('then', 0.026284629203937655),\n",
       " ('rubbish', 0.0262166952461255),\n",
       " ('okay', 0.025981446095883612),\n",
       " ('sucks', 0.025930224401969338),\n",
       " ('pretentious', 0.025907912370628304),\n",
       " ('positive', 0.02577397640979877),\n",
       " ('confusing', 0.02573761872947362),\n",
       " ('remotely', 0.025699566061653016),\n",
       " ('obnoxious', 0.025454829745850248),\n",
       " ('m', 0.0254354959282492),\n",
       " ('rent', 0.025373441934038496),\n",
       " ('laughs', 0.025346512576104395),\n",
       " ('re', 0.025342239903627856),\n",
       " ('context', 0.02527438259371357),\n",
       " ('disgusting', 0.025195418263468185),\n",
       " ('so', 0.02514802461143882),\n",
       " ('tiresome', 0.025031684199042097),\n",
       " ('miscast', 0.024970026716882362),\n",
       " ('aren', 0.02496870388938591),\n",
       " ('forced', 0.02493329977771371),\n",
       " ('paid', 0.024906929703330343),\n",
       " ('utter', 0.02480228223338552),\n",
       " ('uninspired', 0.024799576212017463),\n",
       " ('falls', 0.0247496317068107),\n",
       " ('throw', 0.024614954073046695),\n",
       " ('been', 0.02447048742944506),\n",
       " ('ugly', 0.02433482004483237),\n",
       " ('hopes', 0.024315635652054312),\n",
       " ('dire', 0.02419122184005109),\n",
       " ('hunter', 0.024171291127418466),\n",
       " ('producers', 0.024089231997130214),\n",
       " ('seem', 0.024065146985976844),\n",
       " ('straight', 0.023996666451552164),\n",
       " ('vampire', 0.02394279757407268),\n",
       " ('paper', 0.02390882808396101),\n",
       " ('crappy', 0.02380725554668807),\n",
       " ('excited', 0.023764516357875826),\n",
       " ('start', 0.023739057832096767),\n",
       " ('material', 0.023729757962158746),\n",
       " ('excuse', 0.023681577270328102),\n",
       " ('cop', 0.023480677028928136),\n",
       " ('f', 0.023312251619610827),\n",
       " ('ms', 0.02328232798627832),\n",
       " ('villain', 0.023158273483660743),\n",
       " ('fest', 0.023091425711778246),\n",
       " ('lack', 0.023039437894325176),\n",
       " ('such', 0.02303116107865096),\n",
       " ('saving', 0.023025745893238077),\n",
       " ('clichs', 0.022928209200342317),\n",
       " ('enough', 0.022921397253925304),\n",
       " ('mistake', 0.022868689470375004),\n",
       " ('unbelievable', 0.022864325693347884),\n",
       " ('maybe', 0.022825002748295294),\n",
       " ('blame', 0.02280836927954317),\n",
       " ('bunch', 0.022769532876362866),\n",
       " ('version', 0.02275329694575549),\n",
       " ('candy', 0.022749363632616752),\n",
       " ('island', 0.022745800666080174),\n",
       " ('tripe', 0.02269518850983268),\n",
       " ('wasting', 0.02268137134335676),\n",
       " ('inept', 0.022679276425665768),\n",
       " ('actor', 0.022636975371771034),\n",
       " ('flop', 0.022613758633444538),\n",
       " ('any', 0.022560608437607193),\n",
       " ('k', 0.02255401757961504),\n",
       " ('appalling', 0.02250097585355606),\n",
       " ('propaganda', 0.022465024430755744),\n",
       " ('major', 0.022430482324246583),\n",
       " ('sequel', 0.022362296462477872),\n",
       " ('offensive', 0.02232608060482544),\n",
       " ('revenge', 0.02231515094247262),\n",
       " ('shoot', 0.02228810570921174),\n",
       " ('whatsoever', 0.02228649834694094),\n",
       " ('ruined', 0.02217381152821105),\n",
       " ('painfully', 0.02215200820904093),\n",
       " ('on', 0.02201602093973005),\n",
       " ('shame', 0.02198149346764826),\n",
       " ('effects', 0.02184948220196025),\n",
       " ('wouldn', 0.021848506706035158),\n",
       " ('development', 0.02177324199006574),\n",
       " ('plot', 0.021733893676650618),\n",
       " ('co', 0.021728673026887656),\n",
       " ('church', 0.021719723717009972),\n",
       " ('storyline', 0.021663404462350752),\n",
       " ('screenwriter', 0.021660177252485924),\n",
       " ('bother', 0.021571699909566963),\n",
       " ('miserably', 0.021516173872499808),\n",
       " ('christian', 0.021515873507543658),\n",
       " ('add', 0.021468134313277938),\n",
       " ('found', 0.02144907776798715),\n",
       " ('watching', 0.021344833140596587),\n",
       " ('pseudo', 0.02130838407602347),\n",
       " ('boredom', 0.02111999591793001),\n",
       " ('please', 0.0210907650932963),\n",
       " ('talent', 0.021005847445274783),\n",
       " ('continuity', 0.021005145852421917),\n",
       " ('talents', 0.020992716564348892),\n",
       " ('college', 0.020990718952374858),\n",
       " ('tried', 0.020978219626186824),\n",
       " ('editing', 0.02086581480144375),\n",
       " ('lines', 0.020853755408845785),\n",
       " ('drivel', 0.02072649369275969),\n",
       " ('generous', 0.020697017742241995),\n",
       " ('potential', 0.02067298827209082),\n",
       " ('creatures', 0.02060139942906132),\n",
       " ('disjointed', 0.020581338926655205),\n",
       " ('irritating', 0.020576764848872685),\n",
       " ('pile', 0.02056089896754153),\n",
       " ('acts', 0.020560043588043538),\n",
       " ('junk', 0.020558505639508215),\n",
       " ('raped', 0.020550629285133258),\n",
       " ('christ', 0.020481424289613512),\n",
       " ('brain', 0.020431161137662704),\n",
       " ('slasher', 0.020425652445140892),\n",
       " ('seconds', 0.020390927443421886),\n",
       " ('nobody', 0.02038926810176261),\n",
       " ('dialog', 0.020338349197601496),\n",
       " ('makers', 0.020333184431951125),\n",
       " ('excitement', 0.020290456024291807),\n",
       " ('flashbacks', 0.020267510512910245),\n",
       " ('sloppy', 0.02023407873439836),\n",
       " ('joke', 0.020212187048528528),\n",
       " ('sleep', 0.020108895811675794),\n",
       " ('bottom', 0.019986770547280177),\n",
       " ('however', 0.01998110496205118),\n",
       " ('fail', 0.019937405211620234),\n",
       " ('sucked', 0.01987492301731158),\n",
       " ('soap', 0.01985352539554302),\n",
       " ('looked', 0.01981021184092711),\n",
       " ('stinks', 0.019769365381781166),\n",
       " ('deserve', 0.01961403432109647),\n",
       " ('exact', 0.019555320028258993),\n",
       " ('substance', 0.019552647432498172),\n",
       " ('yeah', 0.019513150136671542),\n",
       " ('production', 0.019510696746296522),\n",
       " ('female', 0.019476914978121793),\n",
       " ('unintentional', 0.01938772328019893),\n",
       " ('army', 0.019364852889641612),\n",
       " ('minute', 0.019351862554568233),\n",
       " ('unrealistic', 0.019350657250497855),\n",
       " ('rescue', 0.019340920364464914),\n",
       " ('theater', 0.01933382927666849),\n",
       " ('monsters', 0.019332636015751033),\n",
       " ('frankly', 0.01932655082384388),\n",
       " ('children', 0.01931424060686887),\n",
       " ('convince', 0.01931207351556065),\n",
       " ('shallow', 0.019298445504930536),\n",
       " ('synopsis', 0.01925970639239659),\n",
       " ('scott', 0.019183474405570326),\n",
       " ('seriously', 0.019182027987150005),\n",
       " ('ridiculously', 0.019169300285178974),\n",
       " ('looking', 0.01915098543996656),\n",
       " ('kareena', 0.019110212601710662),\n",
       " ('wrote', 0.01901532341148643),\n",
       " ('attempts', 0.01900634378065394),\n",
       " ('bothered', 0.01897071277757853),\n",
       " ('utterly', 0.018924824767803397),\n",
       " ('giant', 0.018891084650049704),\n",
       " ('writers', 0.018868906582101292),\n",
       " ('atrocious', 0.018848042351202358),\n",
       " ('plain', 0.01882876652551359),\n",
       " ('presumably', 0.01882662975094794),\n",
       " ('example', 0.01879645323783717),\n",
       " ('murray', 0.018754173430046928),\n",
       " ('seemed', 0.01874913229591306),\n",
       " ('stay', 0.018744159706432693),\n",
       " ('interview', 0.01867208596470953),\n",
       " ('disaster', 0.018553283301235162),\n",
       " ('value', 0.01854408095516636),\n",
       " ('paint', 0.018529607132429363),\n",
       " ('original', 0.018528190682362396),\n",
       " ('difficult', 0.01851845529817859),\n",
       " ('care', 0.018494804801171275),\n",
       " ('watchable', 0.018481870605389094),\n",
       " ('useless', 0.018470481000366856),\n",
       " ('desperately', 0.018421675047000246),\n",
       " ('except', 0.018391993551238554),\n",
       " ('doing', 0.018384737621350643),\n",
       " ('errors', 0.018380414978330265),\n",
       " ('solely', 0.018349321075079396),\n",
       " ('sitting', 0.018346519170301088),\n",
       " ('giving', 0.018335957397904834),\n",
       " ('ideas', 0.01832709922124519),\n",
       " ('unbearable', 0.01832115967620141),\n",
       " ('advice', 0.01827337252768884),\n",
       " ('nor', 0.018254420259554302),\n",
       " ('project', 0.01825263321477175),\n",
       " ('dozen', 0.018206363291515763),\n",
       " ('charles', 0.018163660578293453),\n",
       " ('plastic', 0.01816174102037866),\n",
       " ('book', 0.018139011699011297),\n",
       " ('shots', 0.018114876064363867),\n",
       " ('ill', 0.01810362181821573),\n",
       " ('grade', 0.018088309511242354),\n",
       " ('where', 0.018065882599695157),\n",
       " ('women', 0.018026883825059334),\n",
       " ('screenplay', 0.01801430702410132),\n",
       " ('through', 0.01799086300324139),\n",
       " ('actress', 0.017876003487857145),\n",
       " ('sign', 0.01786563614405694),\n",
       " ('walk', 0.017823522607756635),\n",
       " ('santa', 0.017727102733219185),\n",
       " ('happens', 0.017722408798843584),\n",
       " ('contrived', 0.01772030364588279),\n",
       " ('gun', 0.017685993176933843),\n",
       " ('ashamed', 0.01767962309872159),\n",
       " ('gratuitous', 0.01766573778380385),\n",
       " ('one', 0.01760825934404326),\n",
       " ('not', 0.01756233644118987),\n",
       " ('credibility', 0.017558852870687956),\n",
       " ('promising', 0.01754441708257229),\n",
       " ('risk', 0.017532600100721246),\n",
       " ('sub', 0.017531947750389465),\n",
       " ('lacking', 0.01751375983644653),\n",
       " ('fell', 0.017464857159331267),\n",
       " ('scenery', 0.01745136595531994),\n",
       " ('flesh', 0.017402514298262686),\n",
       " ('animal', 0.01738668169220543),\n",
       " ('tired', 0.01738321454156668),\n",
       " ('writer', 0.01738088775756083),\n",
       " ('lady', 0.01737065721256548),\n",
       " ('dialogue', 0.01731937394664761),\n",
       " ('terribly', 0.017291135257276893),\n",
       " ('downright', 0.017277675563205447),\n",
       " ('rented', 0.01724797765690071),\n",
       " ('clumsy', 0.01724129080518207),\n",
       " ('blah', 0.01721737717739677),\n",
       " ('random', 0.017199913549248002),\n",
       " ('members', 0.017198947117344765),\n",
       " ('three', 0.017189383912215896),\n",
       " ('celluloid', 0.01717400080375888),\n",
       " ('your', 0.017140173886430056),\n",
       " ('lost', 0.017127763322061805),\n",
       " ('suddenly', 0.017124566068806114),\n",
       " ('cover', 0.01706668083587429),\n",
       " ('existent', 0.017028540662919332),\n",
       " ('mostly', 0.017009366180205383),\n",
       " ('dig', 0.0169908877154943),\n",
       " ('spending', 0.01694440087799101),\n",
       " ('elsewhere', 0.016937877167916518),\n",
       " ('suck', 0.01689773719240759),\n",
       " ('apparent', 0.016783874225807266),\n",
       " ('fill', 0.016766110935370608),\n",
       " ('running', 0.01672862109999636),\n",
       " ('jokes', 0.016718920312228033),\n",
       " ('cheese', 0.016699473014889832),\n",
       " ('outer', 0.016612591391981468),\n",
       " ('anil', 0.016581200840654876),\n",
       " ('director', 0.01651289445031143),\n",
       " ('awfully', 0.0164922004149853),\n",
       " ('mix', 0.016468214294032505),\n",
       " ('naturally', 0.016404879835269448),\n",
       " ('scientist', 0.016395078905109238),\n",
       " ('imdb', 0.016343168034107177),\n",
       " ('dumb', 0.01628969354969244),\n",
       " ('made', 0.01627980991044143),\n",
       " ('curiosity', 0.01627743355102997),\n",
       " ('somewhere', 0.01623611744674799),\n",
       " ('stereotyped', 0.016235814767295298),\n",
       " ('officer', 0.01623540103988457),\n",
       " ('shelf', 0.016151304702362455),\n",
       " ('spends', 0.016089566181633215),\n",
       " ('explanation', 0.016040330428242225),\n",
       " ('proof', 0.01602138123515429),\n",
       " ('killed', 0.016004979798664876),\n",
       " ('songs', 0.016002280189188096),\n",
       " ('why', 0.015994497048455174),\n",
       " ('adequate', 0.015978003410591603),\n",
       " ('assume', 0.015953574865902438),\n",
       " ('mean', 0.015907137878947278),\n",
       " ('year', 0.015900265748875857),\n",
       " ('named', 0.015897377296493417),\n",
       " ('actors', 0.015880849255718713),\n",
       " ('dreck', 0.01584418483784927),\n",
       " ('ripped', 0.015809352391222227),\n",
       " ('exception', 0.01580103765354694),\n",
       " ('let', 0.015747554995806854),\n",
       " ('said', 0.01573920675680913),\n",
       " ('handed', 0.015729421480492778),\n",
       " ('five', 0.015692627471399434),\n",
       " ('manage', 0.015647108880417107),\n",
       " ('thousands', 0.01564343097589297),\n",
       " ('faith', 0.015616976955551868),\n",
       " ('hideous', 0.015589158171890806),\n",
       " ('alas', 0.015538213296394245),\n",
       " ('interesting', 0.01553743160703441),\n",
       " ('camera', 0.015534217771859267),\n",
       " ('affair', 0.015499371820329406),\n",
       " ('basketball', 0.015498025904813827),\n",
       " ('saved', 0.015479619606949036),\n",
       " ('allow', 0.015471290657970004),\n",
       " ('embarrassed', 0.01546569091101236),\n",
       " ('historically', 0.015405093934372963),\n",
       " ('guy', 0.015377641254470035),\n",
       " ('smoking', 0.015346508854378339),\n",
       " ('implausible', 0.015340453986022743),\n",
       " ('entirely', 0.015334692788183639),\n",
       " ('insulting', 0.01532850864469151),\n",
       " ('unable', 0.01532143353815715),\n",
       " ('supposedly', 0.015316107621242381),\n",
       " ('replaced', 0.015263381265213498),\n",
       " ('write', 0.015247349730647827),\n",
       " ('devoid', 0.015196181920380176),\n",
       " ('angry', 0.015128878425101423),\n",
       " ('cannot', 0.015124671278970794),\n",
       " ('stinker', 0.015117424017513682),\n",
       " ('types', 0.015097306608066992),\n",
       " ('hype', 0.015076288365524309),\n",
       " ('responsible', 0.014991356276561587),\n",
       " ('peter', 0.014969127137333015),\n",
       " ('putting', 0.014910707254937247),\n",
       " ('over', 0.014897181020826423),\n",
       " ('cardboard', 0.014888714204149046),\n",
       " ('interspersed', 0.014883165331874147),\n",
       " ('haired', 0.014880449676198561),\n",
       " ('spend', 0.014876094316227658),\n",
       " ('elvis', 0.014854709844151742),\n",
       " ('indulgent', 0.014847232132387192),\n",
       " ('catholic', 0.014843519648135947),\n",
       " ('downhill', 0.014807184967767804),\n",
       " ('lazy', 0.01478151469522973),\n",
       " ('aged', 0.014773315829198594),\n",
       " ('exist', 0.014753607788843274),\n",
       " ('torture', 0.014733998799388371),\n",
       " ('prove', 0.014729418674653),\n",
       " ('tolerable', 0.014680880104255795),\n",
       " ('four', 0.014654547592632515),\n",
       " ('acceptable', 0.014651730694965854),\n",
       " ('chick', 0.014641428398798834),\n",
       " ('unimaginative', 0.014629366067627065),\n",
       " ('whiny', 0.014626751487134578),\n",
       " ('artsy', 0.014597921349167282),\n",
       " ('decide', 0.01459608775580898),\n",
       " ('unpleasant', 0.014539257963097197),\n",
       " ('rotten', 0.014526987482368664),\n",
       " ('racist', 0.01452131829220464),\n",
       " ('air', 0.014513999400043522),\n",
       " ('flimsy', 0.014510298364381134),\n",
       " ('baldwin', 0.014458793249711607),\n",
       " ('merely', 0.014423588430956452),\n",
       " ('wood', 0.014405182128559181),\n",
       " ('thinking', 0.014365675477621558),\n",
       " ('earth', 0.014352953870200828),\n",
       " ('kidding', 0.014337420788166338),\n",
       " ('unintentionally', 0.014336443850996724),\n",
       " ('vampires', 0.014325905430975228),\n",
       " ('generic', 0.014319871170399824),\n",
       " ('defense', 0.014290336242912222),\n",
       " ('saif', 0.014289573796132722),\n",
       " ('asleep', 0.014289012435576958),\n",
       " ('execution', 0.014283962008273412),\n",
       " ('figure', 0.014283770855230154),\n",
       " ('lackluster', 0.014273058981901449),\n",
       " ('hoped', 0.014264724762345846),\n",
       " ('nonsense', 0.014261341497203131),\n",
       " ('horrid', 0.014253216604458425),\n",
       " ('god', 0.014237363547447935),\n",
       " ('l', 0.014187296773742567),\n",
       " ('caricatures', 0.014181564208326638),\n",
       " ('starts', 0.014153430344591607),\n",
       " ('dry', 0.014133935534427948),\n",
       " ('display', 0.014128179969827096),\n",
       " ('button', 0.01411647116261475),\n",
       " ('bore', 0.014116389381443268),\n",
       " ('empty', 0.014096772700681893),\n",
       " ('harold', 0.014052130896646566),\n",
       " ('incomprehensible', 0.014009428713655193),\n",
       " ('annie', 0.014008405850952511),\n",
       " ('thrown', 0.014007462594894693),\n",
       " ('incredibly', 0.014005185007294356),\n",
       " ('renting', 0.013926687608630473),\n",
       " ('connect', 0.013922471736926737),\n",
       " ('younger', 0.013921148395141747),\n",
       " ('author', 0.013908729139553395),\n",
       " ('mistakes', 0.013902060662024719),\n",
       " ('vague', 0.013900188409028456),\n",
       " ('susan', 0.013899718009237953),\n",
       " ('obvious', 0.013862928310275269),\n",
       " ('public', 0.013848261281553188),\n",
       " ('porn', 0.013842110384054581),\n",
       " ('trash', 0.01380399057217848),\n",
       " ('stevens', 0.013796967244647431),\n",
       " ('sequels', 0.013782463861472687),\n",
       " ('hurt', 0.013769543921240142),\n",
       " ('desert', 0.013763619124969725),\n",
       " ('did', 0.01373763944972817),\n",
       " ('behave', 0.013719767167839493),\n",
       " ('served', 0.013714838239223703),\n",
       " ('claims', 0.013706886269650512),\n",
       " ('ultimately', 0.013697643591100138),\n",
       " ('wide', 0.013685211021307755),\n",
       " ('wow', 0.013679184770624813),\n",
       " ('worthless', 0.013670533296298283),\n",
       " ('dear', 0.013653591379600143),\n",
       " ('plodding', 0.013622845840855248),\n",
       " ('mike', 0.013594086031988716),\n",
       " ('favor', 0.013578310381078491),\n",
       " ('call', 0.01357764663132794),\n",
       " ('biggest', 0.01352994758638958),\n",
       " ('worthy', 0.013524754842185314),\n",
       " ('meaning', 0.013517997531900559),\n",
       " ('scientific', 0.01351539665384285),\n",
       " ('hanks', 0.0134672133762159),\n",
       " ('ads', 0.013463653421760924),\n",
       " ('gay', 0.01341484080868823),\n",
       " ('embarrassingly', 0.01340133628697373),\n",
       " ('literary', 0.01338920899932103),\n",
       " ('playing', 0.013329954634726374),\n",
       " ('bo', 0.013312890564682512),\n",
       " ('manipulative', 0.01328701694140633),\n",
       " ('dressed', 0.013285092423656558),\n",
       " ('embarrassment', 0.013269530319198216),\n",
       " ('regarding', 0.013233250211631655),\n",
       " ('stilted', 0.013215539220141917),\n",
       " ('sleeve', 0.013215085161586721),\n",
       " ('rating', 0.013203442200940881),\n",
       " ('kills', 0.01318391946735874),\n",
       " ('sounds', 0.013178727878711723),\n",
       " ('ali', 0.013173031266866373),\n",
       " ('non', 0.013162603751805226),\n",
       " ('pie', 0.013161492629253854),\n",
       " ('populated', 0.013152746747459265),\n",
       " ('killing', 0.013111860853151809),\n",
       " ('else', 0.013110592541316697),\n",
       " ('schneider', 0.013093514941690407),\n",
       " ('priest', 0.013071537555948205),\n",
       " ('hollow', 0.013068001463175462),\n",
       " ('shower', 0.013029604174841076),\n",
       " ('ruins', 0.013021597567104509),\n",
       " ('mental', 0.013019696244479807),\n",
       " ('this', 0.013009778169664546),\n",
       " ('pregnant', 0.012997074834619551),\n",
       " ('make', 0.012992851916498635),\n",
       " ('timberlake', 0.01297968986002045),\n",
       " ('saves', 0.012915795355367861),\n",
       " ('vastly', 0.012914828969565762),\n",
       " ('swear', 0.01290105947549007),\n",
       " ('stella', 0.012883911119651204),\n",
       " ('grave', 0.012882555040277136),\n",
       " ('thats', 0.012861061812910347),\n",
       " ('drinking', 0.01286012947101971),\n",
       " ('boom', 0.012851779594694187),\n",
       " ('introduction', 0.012831129197335466),\n",
       " ('programming', 0.01279621975775026),\n",
       " ('career', 0.012773059501084122),\n",
       " ('stereotype', 0.012769447626661476),\n",
       " ('attractive', 0.012765873120010157),\n",
       " ('victims', 0.01274929924550217),\n",
       " ('pass', 0.012735021821089283),\n",
       " ('experiment', 0.012716112941788909),\n",
       " ('retarded', 0.012713099529852414),\n",
       " ('stuck', 0.012709332698253263),\n",
       " ('akshay', 0.01268427306987787),\n",
       " ('cut', 0.01267628523901548),\n",
       " ('shoddy', 0.012674792040888047),\n",
       " ('damme', 0.012666536417656672),\n",
       " ('inaccurate', 0.012653687577536547),\n",
       " ('ray', 0.012649818023510177),\n",
       " ('woman', 0.012646521945546331),\n",
       " ('research', 0.01264049466286456),\n",
       " ('mile', 0.012627245693716725),\n",
       " ('place', 0.0126246458315094),\n",
       " ('demon', 0.012621688470792602),\n",
       " ('vulgar', 0.012612150302693324),\n",
       " ('engage', 0.012602272831074852),\n",
       " ('wives', 0.0126018901901183),\n",
       " ('mention', 0.012581598480006463),\n",
       " ('if', 0.012569631262234718),\n",
       " ('cartoon', 0.012561864177985754),\n",
       " ('unbelievably', 0.012550391668315846),\n",
       " ('only', 0.012517107727859134),\n",
       " ('ended', 0.012507282716729804),\n",
       " ('stereotypical', 0.012506426536204346),\n",
       " ('spent', 0.012503032775055215),\n",
       " ('thing', 0.012483110991541408),\n",
       " ('phone', 0.012464039991489134),\n",
       " ('stock', 0.012446742147556623),\n",
       " ('drop', 0.012432978683590452),\n",
       " ('self', 0.012432059211520796),\n",
       " ('headache', 0.012424495134195475),\n",
       " ('escapes', 0.01241921129824893),\n",
       " ('conceived', 0.012392639977060709),\n",
       " ('required', 0.012392260947042839),\n",
       " ('assassin', 0.012332404091910094),\n",
       " ('meat', 0.012327751187890429),\n",
       " ('therefore', 0.012316138729629597),\n",
       " ('struggling', 0.012308628353572298),\n",
       " ('ho', 0.012307714936265701),\n",
       " ('ta', 0.01229940964932024),\n",
       " ('cold', 0.012289510775209265),\n",
       " ('expects', 0.012271684887263188),\n",
       " ('furthermore', 0.0122632986963162),\n",
       " ('remote', 0.012254529263879231),\n",
       " ('cgi', 0.012250569964074174),\n",
       " ('arab', 0.012230232115225254),\n",
       " ('feminist', 0.01222000440598054),\n",
       " ('hair', 0.012213792907949607),\n",
       " ('intelligence', 0.012203964889416774),\n",
       " ('destroy', 0.01219021390702397),\n",
       " ('cameo', 0.012186034087855126),\n",
       " ('claus', 0.012181510618531247),\n",
       " ('awake', 0.01217129023745014),\n",
       " ('sums', 0.012139945909251909),\n",
       " ('auto', 0.012126012687040617),\n",
       " ('cue', 0.01212094362300896),\n",
       " ('speak', 0.012117784815618106),\n",
       " ('stereotypes', 0.012106976159466584),\n",
       " ('footage', 0.01210365800158429),\n",
       " ('maker', 0.01209336953927036),\n",
       " ('rental', 0.01208305288814734),\n",
       " ('proper', 0.012063210621690416),\n",
       " ('mercifully', 0.012047936344961967),\n",
       " ('gimmick', 0.012041001769926644),\n",
       " ('coherent', 0.012027899920693624),\n",
       " ('inane', 0.01199317587757883),\n",
       " ('relies', 0.01199234566034381),\n",
       " ('nomination', 0.01198225257353125),\n",
       " ('segal', 0.01194734023405841),\n",
       " ('christians', 0.011946398905489906),\n",
       " ('overrated', 0.011926101166626013),\n",
       " ('don', 0.011924357980777267),\n",
       " ('severely', 0.01191616855223732),\n",
       " ('phony', 0.011913822393121725),\n",
       " ('selfish', 0.011900529017180243),\n",
       " ('resume', 0.01189734632085906),\n",
       " ('another', 0.011877684431361637),\n",
       " ('sean', 0.011876040214137611),\n",
       " ('hepburn', 0.011869243078008906),\n",
       " ('secondly', 0.011863109334450273),\n",
       " ('ups', 0.011859394818287424),\n",
       " ('planet', 0.011852030247443593),\n",
       " ('changed', 0.011845335611887496),\n",
       " ('amused', 0.011842962845878572),\n",
       " ('lowest', 0.011831634819501922),\n",
       " ('fools', 0.011824116232842371),\n",
       " ('spelling', 0.011821902194872629),\n",
       " ('repressed', 0.011821527286346351),\n",
       " ('unlikeable', 0.01181876011058648),\n",
       " ('failure', 0.011816519901709049),\n",
       " ('line', 0.011796438571873898),\n",
       " ('hyped', 0.011784666544684307),\n",
       " ('anti', 0.011764086315539171),\n",
       " ('acting', 0.011752348314205376),\n",
       " ('promise', 0.011749711660046624),\n",
       " ('observe', 0.011739608959278624),\n",
       " ('mindless', 0.011729368774426886),\n",
       " ('lacked', 0.011718485221863719),\n",
       " ('rather', 0.011704535222487893),\n",
       " ('ed', 0.011700096242496988),\n",
       " ('significant', 0.011696176501939931),\n",
       " ('talks', 0.011678101476086885),\n",
       " ('arty', 0.011674972481678907),\n",
       " ('spit', 0.011671408526135133),\n",
       " ('ilk', 0.011661568455359029),\n",
       " ('unoriginal', 0.011651107245840885),\n",
       " ('forward', 0.011646719533106097),\n",
       " ('toilet', 0.011635522207639075),\n",
       " ('suppose', 0.01163325851007219),\n",
       " ('feed', 0.011617447517425154),\n",
       " ('surrounded', 0.011607897169523122),\n",
       " ('wanted', 0.011604506869089707),\n",
       " ('tashan', 0.011596205445299112),\n",
       " ('dr', 0.011543949281335638),\n",
       " ('scare', 0.011543316667712907),\n",
       " ('murderer', 0.011535350571639673),\n",
       " ('explained', 0.011466329649783221),\n",
       " ('cheated', 0.011455846970137708),\n",
       " ('whats', 0.011451443577230849),\n",
       " ('romance', 0.011445558616225331),\n",
       " ('jewish', 0.01144156416364368),\n",
       " ('sexual', 0.011438682797255687),\n",
       " ('books', 0.011419811777535167),\n",
       " ('throwing', 0.011404165894740238),\n",
       " ('nose', 0.011395583651720633),\n",
       " ('parking', 0.011390688400833914),\n",
       " ('pick', 0.011357671445382182),\n",
       " ('chose', 0.011354353327826128),\n",
       " ('improve', 0.01135058481305392),\n",
       " ('kapoor', 0.011340767814074905),\n",
       " ('costs', 0.011325900726890983),\n",
       " ('saying', 0.01132561762955132),\n",
       " ('early', 0.011320525734188099),\n",
       " ('technically', 0.01131767283706195),\n",
       " ('hackman', 0.01128829484924065),\n",
       " ('birthday', 0.011282785404027749),\n",
       " ('cinematography', 0.011263572785831687),\n",
       " ('hurts', 0.01125015430309152),\n",
       " ('saturday', 0.01124783714797124),\n",
       " ('meaningless', 0.011239510238506717),\n",
       " ('mannered', 0.011239044207972256),\n",
       " ('screaming', 0.011238620310222372),\n",
       " ('should', 0.011236648355832358),\n",
       " ('crazed', 0.011236418275421323),\n",
       " ('dignity', 0.011236150963786551),\n",
       " ('mate', 0.0112167000098445),\n",
       " ('letters', 0.011208675517174482),\n",
       " ('recycled', 0.011206236378205572),\n",
       " ('promptly', 0.011202237607822147),\n",
       " ('inexplicably', 0.011161321811546256),\n",
       " ('or', 0.01115296534330533),\n",
       " ('simply', 0.011146233896835906),\n",
       " ('too', 0.011130044921930277),\n",
       " ('nerd', 0.01112254312772144),\n",
       " ('chris', 0.011116119389820139),\n",
       " ('proceedings', 0.011111786695547103),\n",
       " ('lived', 0.011100598930695581),\n",
       " ('code', 0.011095425242701427),\n",
       " ('potentially', 0.011093285835678523),\n",
       " ('open', 0.011075631889800958),\n",
       " ('faster', 0.011074177906888305),\n",
       " ('moore', 0.011070458274337775),\n",
       " ('bowl', 0.01106041756253143),\n",
       " ('absolutely', 0.01104413079684688),\n",
       " ('just', 0.01103335685499157),\n",
       " ('suspension', 0.011031781173072127),\n",
       " ('enemy', 0.011025820754518637),\n",
       " ('conclusion', 0.010986051066943354),\n",
       " ('hospital', 0.010977494845678705),\n",
       " ('romances', 0.010962761722118314),\n",
       " ('spoke', 0.010962116403553664),\n",
       " ('hardly', 0.010960545391113446),\n",
       " ('olds', 0.010951344004097446),\n",
       " ('creek', 0.010950023924322868),\n",
       " ('shouting', 0.010943727502542739),\n",
       " ('originality', 0.010912963822714918),\n",
       " ('bollywood', 0.010911409137577786),\n",
       " ('cape', 0.010902326129518277),\n",
       " ('teeth', 0.010900502046002621),\n",
       " ('backdrop', 0.01088568800870873),\n",
       " ('turn', 0.010880478059425672),\n",
       " ('mason', 0.010866951716170657),\n",
       " ('grace', 0.01084840625738232),\n",
       " ('valley', 0.01084518042587585),\n",
       " ('depressing', 0.010827818086738505),\n",
       " ('superficial', 0.010826403237558537),\n",
       " ('invested', 0.010812488716640858),\n",
       " ('bomb', 0.010811727591767123),\n",
       " ('embarrass', 0.010778451069403568),\n",
       " ('sided', 0.010773707983617683),\n",
       " ('sticking', 0.010762292435547709),\n",
       " ('common', 0.010754536408451027),\n",
       " ('boat', 0.010750196487059143),\n",
       " ('promised', 0.010746025901289742),\n",
       " ('wayans', 0.01074433894592942),\n",
       " ('sheer', 0.010734103279474516),\n",
       " ('wrestling', 0.010724515540975418),\n",
       " ('staff', 0.010715523520497056),\n",
       " ('apollo', 0.01071137764377477),\n",
       " ('leigh', 0.01070208059867856),\n",
       " ('virtually', 0.010691942663824002),\n",
       " ('seagal', 0.010677324100672115),\n",
       " ('comes', 0.010674899719725498),\n",
       " ('edition', 0.010673353805904198),\n",
       " ('predictably', 0.010666551243955744),\n",
       " ('stuff', 0.010664915811483258),\n",
       " ('gang', 0.010664441184213114),\n",
       " ('cancer', 0.010643225900463576),\n",
       " ('obviously', 0.01064167008065452),\n",
       " ('would', 0.01062353092223115),\n",
       " ('totally', 0.010616092995147881),\n",
       " ('profile', 0.010596003501785217),\n",
       " ('spacey', 0.010595967407784396),\n",
       " ('ability', 0.010584592521360164),\n",
       " ('horrendous', 0.010580213328532092),\n",
       " ('blood', 0.010579520401095307),\n",
       " ('imitation', 0.010568550630572961),\n",
       " ('bikini', 0.010568043371931094),\n",
       " ('talented', 0.010566001035979447),\n",
       " ('basis', 0.010564729746933205),\n",
       " ('dialogs', 0.01055119139729401),\n",
       " ('showing', 0.010548613564454244),\n",
       " ('door', 0.010544563357219771),\n",
       " ('portray', 0.010527799628490632),\n",
       " ('strictly', 0.010526959295132306),\n",
       " ('mexican', 0.010508731517822324),\n",
       " ('stick', 0.010465961443388676),\n",
       " ('east', 0.010455324716016765),\n",
       " ('anywhere', 0.01043153273466628),\n",
       " ('remake', 0.010419869194952847),\n",
       " ('am', 0.010410414209203933),\n",
       " ('attempting', 0.010386393998627383),\n",
       " ('disturbing', 0.010381152608581442),\n",
       " ('jude', 0.010377136500506754),\n",
       " ('wondering', 0.010363512690012205),\n",
       " ('celebrated', 0.010360111769075865),\n",
       " ('use', 0.010350554074714647),\n",
       " ('wreck', 0.01034473441039392),\n",
       " ('appear', 0.01034443835153917),\n",
       " ('entitled', 0.010335246001593072),\n",
       " ('youth', 0.010323214445994799),\n",
       " ('letdown', 0.010318553446258687),\n",
       " ('moran', 0.010305507693633361),\n",
       " ('mediocrity', 0.010302827140695378),\n",
       " ('news', 0.010292874788426092),\n",
       " ('bits', 0.010276065293631172),\n",
       " ('alone', 0.010268492053981964),\n",
       " ('accents', 0.010263852094534693),\n",
       " ('inhabited', 0.010244117693024819),\n",
       " ('mock', 0.010244061360675906),\n",
       " ('g', 0.010223458175403788),\n",
       " ('box', 0.010203304329265743),\n",
       " ('term', 0.010199983044386098),\n",
       " ('behavior', 0.010198776124373246),\n",
       " ('tedium', 0.01019009220150722),\n",
       " ('intent', 0.01019003812069858),\n",
       " ('husband', 0.010189502265957828),\n",
       " ('presence', 0.010187192336074177),\n",
       " ('z', 0.010184318583214755),\n",
       " ('unappealing', 0.010146391189444364),\n",
       " ('much', 0.010136790117697143),\n",
       " ('tree', 0.010113534581593916),\n",
       " ('doctors', 0.01009985438048419),\n",
       " ('pi', 0.010095099419111344),\n",
       " ('rodney', 0.010090819798082388),\n",
       " ('franchise', 0.010089650929674203),\n",
       " ('piece', 0.010086011549585338),\n",
       " ('company', 0.010083539582601038),\n",
       " ('choppy', 0.010079223420593735),\n",
       " ('turned', 0.010069855547990128),\n",
       " ('test', 0.010041505355613902),\n",
       " ('ball', 0.01004094432360952),\n",
       " ('hated', 0.010035509058945855),\n",
       " ('bear', 0.010034272465057465),\n",
       " ('serves', 0.010027495172169233),\n",
       " ('leonard', 0.010022751390164692),\n",
       " ('deserved', 0.010022334081283377),\n",
       " ('part', 0.01001636043614743),\n",
       " ('opportunity', 0.010013126012646697),\n",
       " ('turning', 0.010011850960865775),\n",
       " ('overacting', 0.010008994714980207),\n",
       " ('refer', 0.010006488920574087),\n",
       " ('flies', 0.010006418749637636),\n",
       " ('uninvolving', 0.009999133897620817),\n",
       " ('produce', 0.009996201403801384),\n",
       " ('jumpy', 0.009994785580841516),\n",
       " ('die', 0.009991412905867096),\n",
       " ('root', 0.00997471350011283),\n",
       " ('insomnia', 0.00997446425552851),\n",
       " ('blatant', 0.00995966200056639),\n",
       " ('larry', 0.009955690536790254),\n",
       " ('threw', 0.009947396538844959),\n",
       " ('billed', 0.009928581875367087),\n",
       " ('bullets', 0.009928175897100596),\n",
       " ('intellectually', 0.00990813882787862),\n",
       " ('rip', 0.009901323399604079),\n",
       " ('stretching', 0.009901296969917267),\n",
       " ('protest', 0.009898455267562355),\n",
       " ('soldiers', 0.009893692382244922),\n",
       " ('flick', 0.009887063364977662),\n",
       " ('justin', 0.009862246602717561),\n",
       " ('highlights', 0.009858908802058626),\n",
       " ('move', 0.009853989980954044),\n",
       " ('merit', 0.009843120594996676),\n",
       " ('russian', 0.009841171721984107),\n",
       " ('security', 0.009837345033883105),\n",
       " ('idiotic', 0.009834123428814463),\n",
       " ('produced', 0.009829430757425803),\n",
       " ('king', 0.009826687234317562),\n",
       " ('magically', 0.009822884247682564),\n",
       " ('united', 0.009807084789070766),\n",
       " ('missile', 0.009799057819334855),\n",
       " ('unlikable', 0.009786915898648083),\n",
       " ('ignorant', 0.009773274317346104),\n",
       " ('amateur', 0.00976740598705611),\n",
       " ('bachelor', 0.009767342945540576),\n",
       " ('asylum', 0.009762733851977992),\n",
       " ('screw', 0.00975680985739272),\n",
       " ('report', 0.009747923269917247),\n",
       " ('dracula', 0.00974673233932056),\n",
       " ('removed', 0.009741651949942212),\n",
       " ('confess', 0.00971629252115732),\n",
       " ('brand', 0.009715253466090762),\n",
       " ('conspiracy', 0.009711697229039706),\n",
       " ('horribly', 0.009708378556425255),\n",
       " ('switch', 0.009702684093379554),\n",
       " ('jaws', 0.009687745551371307),\n",
       " ('unsuspecting', 0.009685342503584642),\n",
       " ('betty', 0.009677035213332467),\n",
       " ('forwarding', 0.009671119689319276),\n",
       " ('university', 0.009663671587814957),\n",
       " ('star', 0.009662325493180027),\n",
       " ('crawl', 0.009646431896859056),\n",
       " ('dopey', 0.009646086331585865),\n",
       " ('ruin', 0.009623010638545718),\n",
       " ('lifeless', 0.009622880727487997),\n",
       " ('flash', 0.009619362535965004),\n",
       " ('whoever', 0.009617412891587535),\n",
       " ('coincidence', 0.009602459974140215),\n",
       " ('choosing', 0.009595110005106933),\n",
       " ('avid', 0.00959009132842227),\n",
       " ('intended', 0.00958469870416763),\n",
       " ('remained', 0.009583962817858378),\n",
       " ('c', 0.009573267668176252),\n",
       " ('waiting', 0.009556225869434894),\n",
       " ('cassie', 0.009548135444223808),\n",
       " ('garage', 0.00953495445878303),\n",
       " ('clarke', 0.009534544585569866),\n",
       " ('fortune', 0.009533039664830208),\n",
       " ('interminable', 0.009532815956355262),\n",
       " ('incessant', 0.009523548502684635),\n",
       " ('plots', 0.009522580549062474),\n",
       " ('danger', 0.00951712056546929),\n",
       " ('costumes', 0.009498014466752443),\n",
       " ('evidently', 0.009495215846701223),\n",
       " ('minus', 0.009491149517466126),\n",
       " ('reporters', 0.009483681104099084),\n",
       " ('israeli', 0.009475007718336466),\n",
       " ('failing', 0.009471184131397692),\n",
       " ('paying', 0.00946923440668514),\n",
       " ('godzilla', 0.009458691554843784),\n",
       " ('dumber', 0.009458290309292485),\n",
       " ('earn', 0.009447622492842494),\n",
       " ('slows', 0.009446746387248761),\n",
       " ('held', 0.009445273681791481),\n",
       " ('chase', 0.009443836261194652),\n",
       " ('lies', 0.009438396984503349),\n",
       " ('hands', 0.009438178161458918),\n",
       " ('grief', 0.009423849453410287),\n",
       " ('brains', 0.00941821534166321),\n",
       " ('tom', 0.009413043338434724),\n",
       " ('resurrected', 0.009408342343729056),\n",
       " ('asking', 0.009402102940345332),\n",
       " ('sleeps', 0.00940179518826583),\n",
       " ('porno', 0.00939072014139651),\n",
       " ('somehow', 0.009388926127086058),\n",
       " ('sarcasm', 0.009388606439390417),\n",
       " ('tie', 0.009385600936631157),\n",
       " ('fall', 0.009380164000893117),\n",
       " ('bring', 0.009379127354576145),\n",
       " ('rape', 0.00937608512307464),\n",
       " ('village', 0.009368451331861403),\n",
       " ('kitchen', 0.009364907146010949),\n",
       " ('concerned', 0.009361135323881133),\n",
       " ('republic', 0.009349942694876427),\n",
       " ('hell', 0.009340036070531717),\n",
       " ('inducing', 0.009338212979255358),\n",
       " ('stomach', 0.009337828638515852),\n",
       " ('shambles', 0.009333545732982972),\n",
       " ('virgin', 0.009331200133905586),\n",
       " ('extraneous', 0.009325041380035131),\n",
       " ('cameras', 0.009322946026797722),\n",
       " ('suffers', 0.009320492992483007),\n",
       " ('justified', 0.009316321747936309),\n",
       " ('plummer', 0.009294827328510395),\n",
       " ('ponderous', 0.009288034423722332),\n",
       " ('player', 0.009280229634544364),\n",
       " ('survivor', 0.009276702647212573),\n",
       " ('rainy', 0.00926970342181375),\n",
       " ('graces', 0.00926209449632913),\n",
       " ...]"
      ]
     },
     "execution_count": 82,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "get_most_similar_words(\"terrible\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 83,
   "metadata": {},
   "outputs": [],
   "source": [
    "import matplotlib.colors as colors\n",
    "\n",
    "words_to_visualize = list()\n",
    "for word, ratio in pos_neg_ratios.most_common(500):\n",
    "    if(word in mlp_full.word2index.keys()):\n",
    "        words_to_visualize.append(word)\n",
    "    \n",
    "for word, ratio in list(reversed(pos_neg_ratios.most_common()))[0:500]:\n",
    "    if(word in mlp_full.word2index.keys()):\n",
    "        words_to_visualize.append(word)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 84,
   "metadata": {},
   "outputs": [],
   "source": [
    "pos = 0\n",
    "neg = 0\n",
    "\n",
    "colors_list = list()\n",
    "vectors_list = list()\n",
    "for word in words_to_visualize:\n",
    "    if word in pos_neg_ratios.keys():\n",
    "        vectors_list.append(mlp_full.weights_0_1[mlp_full.word2index[word]])\n",
    "        if(pos_neg_ratios[word] > 0):\n",
    "            pos+=1\n",
    "            colors_list.append(\"#00ff00\")\n",
    "        else:\n",
    "            neg+=1\n",
    "            colors_list.append(\"#000000\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 85,
   "metadata": {},
   "outputs": [],
   "source": [
    "from sklearn.manifold import TSNE\n",
    "tsne = TSNE(n_components=2, random_state=0)\n",
    "words_top_ted_tsne = tsne.fit_transform(vectors_list)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 86,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "\n",
       "\n",
       "\n",
       "\n",
       "\n",
       "\n",
       "  <div class=\"bk-root\" id=\"3cae9ec1-f49a-49c0-8ac8-91ee02183962\" data-root-id=\"1177\"></div>\n"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "application/javascript": [
       "(function(root) {\n",
       "  function embed_document(root) {\n",
       "    \n",
       "  var docs_json = {\"358f46b8-bc1b-42af-a0ef-19c9c763c306\":{\"roots\":{\"references\":[{\"attributes\":{\"below\":[{\"id\":\"1188\",\"type\":\"LinearAxis\"}],\"center\":[{\"id\":\"1192\",\"type\":\"Grid\"},{\"id\":\"1197\",\"type\":\"Grid\"},{\"id\":\"1213\",\"type\":\"LabelSet\"}],\"left\":[{\"id\":\"1193\",\"type\":\"LinearAxis\"}],\"renderers\":[{\"id\":\"1211\",\"type\":\"GlyphRenderer\"}],\"title\":{\"id\":\"1178\",\"type\":\"Title\"},\"toolbar\":{\"id\":\"1202\",\"type\":\"Toolbar\"},\"toolbar_location\":\"above\",\"x_range\":{\"id\":\"1180\",\"type\":\"DataRange1d\"},\"x_scale\":{\"id\":\"1184\",\"type\":\"LinearScale\"},\"y_range\":{\"id\":\"1182\",\"type\":\"DataRange1d\"},\"y_scale\":{\"id\":\"1186\",\"type\":\"LinearScale\"}},\"id\":\"1177\",\"subtype\":\"Figure\",\"type\":\"Plot\"},{\"attributes\":{},\"id\":\"1234\",\"type\":\"Selection\"},{\"attributes\":{\"ticker\":{\"id\":\"1189\",\"type\":\"BasicTicker\"}},\"id\":\"1192\",\"type\":\"Grid\"},{\"attributes\":{},\"id\":\"1235\",\"type\":\"UnionRenderers\"},{\"attributes\":{\"text\":\"vector T-SNE for most polarized words\"},\"id\":\"1178\",\"type\":\"Title\"},{\"attributes\":{},\"id\":\"1194\",\"type\":\"BasicTicker\"},{\"attributes\":{\"dimension\":1,\"ticker\":{\"id\":\"1194\",\"type\":\"BasicTicker\"}},\"id\":\"1197\",\"type\":\"Grid\"},{\"attributes\":{\"source\":{\"id\":\"1207\",\"type\":\"ColumnDataSource\"},\"text\":{\"field\":\"names\"},\"text_align\":\"center\",\"text_color\":{\"value\":\"#555555\"},\"text_font_size\":{\"value\":\"8pt\"},\"x\":{\"field\":\"x1\"},\"y\":{\"field\":\"x2\"},\"y_offset\":{\"value\":6}},\"id\":\"1213\",\"type\":\"LabelSet\"},{\"attributes\":{},\"id\":\"1199\",\"type\":\"WheelZoomTool\"},{\"attributes\":{\"fill_color\":{\"field\":\"color\"},\"line_color\":{\"value\":\"#1f77b4\"},\"size\":{\"units\":\"screen\",\"value\":8},\"x\":{\"field\":\"x1\"},\"y\":{\"field\":\"x2\"}},\"id\":\"1209\",\"type\":\"Scatter\"},{\"attributes\":{},\"id\":\"1198\",\"type\":\"PanTool\"},{\"attributes\":{},\"id\":\"1200\",\"type\":\"ResetTool\"},{\"attributes\":{\"formatter\":{\"id\":\"1230\",\"type\":\"BasicTickFormatter\"},\"ticker\":{\"id\":\"1194\",\"type\":\"BasicTicker\"}},\"id\":\"1193\",\"type\":\"LinearAxis\"},{\"attributes\":{},\"id\":\"1201\",\"type\":\"SaveTool\"},{\"attributes\":{\"callback\":null,\"data\":{\"color\":[\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#000000\",\"#000000\",\"#000000\",\"#000000\",\"#000000\",\"#000000\",\"#000000\",\"#000000\",\"#000000\",\"#000000\",\"#000000\",\"#000000\",\"#000000\",\"#000000\",\"#000000\",\"#000000\",\"#000000\",\"#000000\",\"#000000\",\"#000000\",\"#000000\",\"#000000\",\"#000000\",\"#000000\",\"#000000\",\"#000000\",\"#000000\",\"#000000\",\"#000000\",\"#000000\",\"#000000\",\"#000000\",\"#000000\",\"#000000\",\"#000000\",\"#000000\",\"#000000\",\"#000000\",\"#000000\",\"#000000\",\"#000000\",\"#000000\",\"#000000\",\"#000000\",\"#000000\",\"#000000\",\"#000000\",\"#000000\",\"#000000\",\"#000000\",\"#000000\",\"#000000\",\"#000000\",\"#000000\",\"#000000\",\"#000000\",\"#000000\",\"#000000\",\"#000000\",\"#000000\",\"#000000\",\"#000000\",\"#000000\",\"#000000\",\"#000000\",\"#000000\",\"#000000\",\"#000000\",\"#000000\",\"#000000\",\"#000000\",\"#000000\",\"#000000\",\"#000000\",\"#000000\",\"#000000\",\"#000000\",\"#000000\",\"#000000\",\"#000000\",\"#000000\",\"#000000\",\"#000000\",\"#000000\",\"#000000\",\"#000000\",\"#000000\",\"#000000\",\"#000000\",\"#000000\",\"#000000\",\"#000000\",\"#000000\",\"#000000\",\"#000000\",\"#000000\",\"#000000\",\"#000000\",\"#000000\",\"#000000\",\"#000000\",\"#000000\",\"#000000\",\"#000000\",\"#000000\",\"#000000\",\"#000000\",\"#000000\",\"#000000\",\"#000000\",\"#000000\",\"#000000\",\"#000000\",\"#000000\",\"#000000\",\"#000000\",\"#000000\",\"#000000\",\"#000000\",\"#000000\",\"#000000\",\"#000000\",\"#000000\",\"#000000\",\"#000000\",\"#000000\",\"#000000\",\"#000000\",\"#000000\",\"#000000\",\"#000000\",\"#000000\",\"#000000\",\"#000000\",\"#000000\",\"#000000\",\"#000000\",\"#000000\",\"#000000\",\"#000000\",\"#000000\",\"#000000\",\"#000000\",\"#000000\",\"#000000\",\"#000000\",\"#000000\",\"#000000\",\"#000000\",\"#000000\",\"#000000\",\"#000000\",\"#000000\",\"#000000\",\"#000000\",\"#000000\",\"#000000\",\"#000000\",\"#000000\",\"#000000\",\"#000000\",\"#000000\",\"#000000\",\"#000000\",\"#000000\",\"#000000\",\"#000000\",\"#000000\",\"#000000\",\"#000000\",\"#000000\",\"#000000\",\"#000000\",\"#000000\",\"#000000\",\"#000000\",\"#000000\",\"#000000\",\"#000000\",\"#000000\",\"#000000\",\"#000000\",\"#000000\",\"#000000\",\"#000000\",\"#000000\",\"#000000\",\"#000000\",\"#000000\",\"#000000\",\"#000000\",\"#000000\",\"#000000\",\"#000000\",\"#000000\",\"#000000\",\"#000000\",\"#000000\",\"#000000\",\"#000000\",\"#000000\",\"#000000\",\"#000000\",\"#000000\",\"#000000\",\"#000000\",\"#000000\",\"#000000\",\"#000000\",\"#000000\",\"#000000\",\"#000000\",\"#000000\",\"#000000\",\"#000000\",\"#000000\",\"#000000\",\"#000000\",\"#000000\",\"#000000\",\"#000000\",\"#000000\",\"#000000\",\"#000000\",\"#000000\",\"#000000\",\"#000000\",\"#000000\",\"#000000\",\"#000000\",\"#000000\",\"#000000\",\"#000000\",\"#000000\",\"#000000\",\"#000000\",\"#000000\",\"#000000\",\"#000000\",\"#000000\",\"#000000\",\"#000000\",\"#000000\",\"#000000\",\"#000000\",\"#000000\",\"#000000\",\"#000000\",\"#000000\",\"#000000\",\"#000000\",\"#000000\",\"#000000\",\"#000000\",\"#000000\",\"#000000\",\"#000000\",\"#000000\",\"#000000\",\"#000000\",\"#000000\",\"#000000\",\"#000000\",\"#000000\",\"#000000\",\"#000000\",\"#000000\",\"#000000\",\"#000000\",\"#000000\",\"#000000\",\"#000000\",\"#000000\",\"#000000\",\"#000000\",\"#000000\",\"#000000\",\"#000000\",\"#000000\",\"#000000\",\"#000000\",\"#000000\",\"#000000\",\"#000000\",\"#000000\",\"#000000\",\"#000000\",\"#000000\",\"#000000\",\"#000000\",\"#000000\",\"#000000\",\"#000000\",\"#000000\",\"#000000\",\"#000000\",\"#000000\",\"#000000\",\"#000000\",\"#000000\",\"#000000\",\"#000000\",\"#000000\",\"#000000\",\"#000000\",\"#000000\",\"#000000\",\"#000000\",\"#000000\",\"#000000\",\"#000000\",\"#000000\",\"#000000\",\"#000000\",\"#000000\",\"#000000\",\"#000000\",\"#000000\",\"#000000\",\"#000000\",\"#000000\",\"#000000\",\"#000000\",\"#000000\",\"#000000\",\"#000000\",\"#000000\",\"#000000\",\"#000000\",\"#000000\",\"#000000\",\"#000000\",\"#000000\",\"#000000\",\"#000000\",\"#000000\",\"#000000\",\"#000000\",\"#000000\",\"#000000\",\"#000000\",\"#000000\",\"#000000\",\"#000000\",\"#000000\",\"#000000\",\"#000000\",\"#000000\",\"#000000\",\"#000000\",\"#000000\",\"#000000\",\"#000000\",\"#000000\",\"#000000\",\"#000000\",\"#000000\",\"#000000\",\"#000000\",\"#000000\",\"#000000\",\"#000000\",\"#000000\",\"#000000\",\"#000000\",\"#000000\",\"#000000\",\"#000000\",\"#000000\",\"#000000\",\"#000000\",\"#000000\",\"#000000\",\"#000000\",\"#000000\",\"#000000\",\"#000000\",\"#000000\",\"#000000\",\"#000000\",\"#000000\",\"#000000\",\"#000000\",\"#000000\",\"#000000\",\"#000000\",\"#000000\",\"#000000\",\"#000000\",\"#000000\",\"#000000\",\"#000000\",\"#000000\",\"#000000\",\"#000000\",\"#000000\",\"#000000\",\"#000000\",\"#000000\",\"#000000\",\"#000000\",\"#000000\",\"#000000\",\"#000000\",\"#000000\",\"#000000\",\"#000000\",\"#000000\",\"#000000\",\"#000000\",\"#000000\",\"#000000\",\"#000000\",\"#000000\",\"#000000\",\"#000000\",\"#000000\",\"#000000\",\"#000000\",\"#000000\",\"#000000\",\"#000000\",\"#000000\",\"#000000\",\"#000000\",\"#000000\",\"#000000\",\"#000000\",\"#000000\",\"#000000\",\"#000000\",\"#000000\",\"#000000\",\"#000000\",\"#000000\",\"#000000\",\"#000000\",\"#000000\",\"#000000\",\"#000000\",\"#000000\",\"#000000\",\"#000000\",\"#000000\",\"#000000\",\"#000000\",\"#000000\",\"#000000\",\"#000000\",\"#000000\",\"#000000\",\"#000000\",\"#000000\",\"#000000\",\"#000000\",\"#000000\",\"#000000\",\"#000000\",\"#000000\",\"#000000\",\"#000000\",\"#000000\",\"#000000\",\"#000000\",\"#000000\",\"#000000\",\"#000000\",\"#000000\",\"#000000\",\"#000000\",\"#000000\",\"#000000\",\"#000000\",\"#000000\",\"#000000\",\"#000000\",\"#000000\",\"#000000\",\"#000000\",\"#000000\",\"#000000\",\"#000000\",\"#000000\",\"#000000\",\"#000000\",\"#000000\",\"#000000\",\"#000000\",\"#000000\",\"#000000\",\"#000000\",\"#000000\",\"#000000\",\"#000000\",\"#000000\",\"#000000\",\"#000000\",\"#000000\",\"#000000\"],\"names\":[\"edie\",\"paulie\",\"felix\",\"polanski\",\"matthau\",\"victoria\",\"mildred\",\"gandhi\",\"flawless\",\"superbly\",\"perfection\",\"astaire\",\"captures\",\"voight\",\"wonderfully\",\"powell\",\"brosnan\",\"lily\",\"bakshi\",\"lincoln\",\"refreshing\",\"breathtaking\",\"bourne\",\"lemmon\",\"delightful\",\"flynn\",\"andrews\",\"homer\",\"beautifully\",\"soccer\",\"elvira\",\"underrated\",\"gripping\",\"superb\",\"delight\",\"welles\",\"sadness\",\"sinatra\",\"touching\",\"timeless\",\"macy\",\"unforgettable\",\"favorites\",\"stewart\",\"sullivan\",\"extraordinary\",\"hartley\",\"brilliantly\",\"friendship\",\"wonderful\",\"palma\",\"magnificent\",\"finest\",\"jackie\",\"ritter\",\"tremendous\",\"freedom\",\"fantastic\",\"terrific\",\"noir\",\"sidney\",\"outstanding\",\"pleasantly\",\"mann\",\"nancy\",\"marie\",\"marvelous\",\"excellent\",\"ruth\",\"stanwyck\",\"widmark\",\"splendid\",\"chan\",\"exceptional\",\"tender\",\"gentle\",\"poignant\",\"gem\",\"amazing\",\"chilling\",\"fisher\",\"davies\",\"captivating\",\"darker\",\"april\",\"kelly\",\"blake\",\"overlooked\",\"ralph\",\"bette\",\"hoffman\",\"cole\",\"shines\",\"powerful\",\"notch\",\"remarkable\",\"pitt\",\"winters\",\"vivid\",\"gritty\",\"giallo\",\"portrait\",\"innocence\",\"psychiatrist\",\"favorite\",\"ensemble\",\"stunning\",\"burns\",\"garbo\",\"barbara\",\"philip\",\"panic\",\"holly\",\"carol\",\"perfect\",\"appreciated\",\"favourite\",\"journey\",\"rural\",\"bond\",\"builds\",\"brilliant\",\"brooklyn\",\"von\",\"recommended\",\"unfolds\",\"daniel\",\"perfectly\",\"crafted\",\"prince\",\"troubled\",\"consequences\",\"haunting\",\"cinderella\",\"alexander\",\"emotions\",\"boxing\",\"subtle\",\"curtis\",\"rare\",\"loved\",\"daughters\",\"courage\",\"dentist\",\"highly\",\"nominated\",\"tony\",\"draws\",\"everyday\",\"contrast\",\"cried\",\"fabulous\",\"ned\",\"fay\",\"emma\",\"sensitive\",\"smooth\",\"dramas\",\"today\",\"helps\",\"inspiring\",\"jimmy\",\"awesome\",\"unique\",\"tragic\",\"intense\",\"stellar\",\"rival\",\"provides\",\"depression\",\"shy\",\"carrie\",\"blend\",\"hank\",\"diana\",\"adorable\",\"unexpected\",\"achievement\",\"bettie\",\"happiness\",\"glorious\",\"davis\",\"terrifying\",\"beauty\",\"ideal\",\"fears\",\"hong\",\"seasons\",\"fascinating\",\"carries\",\"satisfying\",\"definite\",\"touched\",\"greatest\",\"creates\",\"aunt\",\"walter\",\"spectacular\",\"portrayal\",\"ann\",\"enterprise\",\"musicals\",\"deeply\",\"incredible\",\"mature\",\"triumph\",\"margaret\",\"navy\",\"harry\",\"lucas\",\"sweet\",\"joey\",\"oscar\",\"balance\",\"warm\",\"ages\",\"guilt\",\"glover\",\"carrey\",\"learns\",\"unusual\",\"sons\",\"complex\",\"essence\",\"brazil\",\"widow\",\"solid\",\"beautiful\",\"holmes\",\"awe\",\"vhs\",\"eerie\",\"lonely\",\"grim\",\"sport\",\"debut\",\"destiny\",\"thrillers\",\"tears\",\"rose\",\"feelings\",\"ginger\",\"winning\",\"stanley\",\"cox\",\"paris\",\"heart\",\"hooked\",\"comfortable\",\"mgm\",\"masterpiece\",\"themes\",\"danny\",\"anime\",\"perry\",\"joy\",\"lovable\",\"mysteries\",\"hal\",\"louis\",\"charming\",\"urban\",\"allows\",\"impact\",\"italy\",\"gradually\",\"lifestyle\",\"spy\",\"treat\",\"subsequent\",\"kennedy\",\"loving\",\"surprising\",\"quiet\",\"winter\",\"reveals\",\"raw\",\"funniest\",\"pleased\",\"norman\",\"thief\",\"season\",\"secrets\",\"colorful\",\"highest\",\"compelling\",\"danes\",\"castle\",\"kudos\",\"great\",\"baseball\",\"subtitles\",\"bleak\",\"winner\",\"tragedy\",\"todd\",\"nicely\",\"arthur\",\"essential\",\"gorgeous\",\"fonda\",\"eastwood\",\"focuses\",\"enjoyed\",\"natural\",\"intensity\",\"witty\",\"rob\",\"worlds\",\"health\",\"magical\",\"deeper\",\"lucy\",\"moving\",\"lovely\",\"purple\",\"memorable\",\"sings\",\"craig\",\"modesty\",\"relate\",\"episodes\",\"strong\",\"smith\",\"tear\",\"apartment\",\"princess\",\"disagree\",\"kung\",\"adventure\",\"columbo\",\"jake\",\"adds\",\"hart\",\"strength\",\"realizes\",\"dave\",\"childhood\",\"forbidden\",\"tight\",\"surreal\",\"manager\",\"dancer\",\"studios\",\"con\",\"miike\",\"realistic\",\"explicit\",\"kurt\",\"traditional\",\"deals\",\"holds\",\"carl\",\"touches\",\"gene\",\"albert\",\"abc\",\"cry\",\"sides\",\"develops\",\"eyre\",\"dances\",\"oscars\",\"legendary\",\"hearted\",\"importance\",\"portraying\",\"impressed\",\"waters\",\"empire\",\"edge\",\"jean\",\"environment\",\"sentimental\",\"captured\",\"styles\",\"daring\",\"frank\",\"tense\",\"backgrounds\",\"matches\",\"gothic\",\"sharp\",\"achieved\",\"court\",\"steals\",\"rules\",\"colors\",\"reunion\",\"covers\",\"tale\",\"rain\",\"denzel\",\"stays\",\"blob\",\"maria\",\"conventional\",\"fresh\",\"midnight\",\"landscape\",\"animated\",\"titanic\",\"sunday\",\"spring\",\"cagney\",\"enjoyable\",\"immensely\",\"sir\",\"nevertheless\",\"driven\",\"performances\",\"memories\",\"nowadays\",\"simple\",\"golden\",\"leslie\",\"lovers\",\"relationship\",\"supporting\",\"che\",\"packed\",\"trek\",\"provoking\",\"strikes\",\"depiction\",\"emotional\",\"secretary\",\"influenced\",\"florida\",\"germany\",\"brings\",\"lewis\",\"elderly\",\"owner\",\"streets\",\"henry\",\"portrays\",\"bears\",\"china\",\"anger\",\"society\",\"available\",\"best\",\"bugs\",\"magic\",\"delivers\",\"verhoeven\",\"jim\",\"donald\",\"endearing\",\"relationships\",\"greatly\",\"charlie\",\"brad\",\"simon\",\"effectively\",\"march\",\"atmosphere\",\"influence\",\"genius\",\"emotionally\",\"ken\",\"identity\",\"sophisticated\",\"dan\",\"andrew\",\"india\",\"roy\",\"surprisingly\",\"sky\",\"romantic\",\"match\",\"meets\",\"cowboy\",\"wave\",\"bitter\",\"patient\",\"stylish\",\"britain\",\"affected\",\"beatty\",\"love\",\"paul\",\"andy\",\"performance\",\"patrick\",\"unlike\",\"brooks\",\"refuses\",\"award\",\"complaint\",\"ride\",\"dawson\",\"luke\",\"wells\",\"france\",\"sports\",\"handsome\",\"directs\",\"rebel\",\"boll\",\"uwe\",\"seagal\",\"unwatchable\",\"stinker\",\"mst\",\"incoherent\",\"unfunny\",\"waste\",\"blah\",\"horrid\",\"pointless\",\"atrocious\",\"redeeming\",\"prom\",\"drivel\",\"lousy\",\"worst\",\"laughable\",\"awful\",\"poorly\",\"wasting\",\"remotely\",\"existent\",\"boredom\",\"miserably\",\"sucks\",\"uninspired\",\"lame\",\"insult\",\"godzilla\",\"uninteresting\",\"gadget\",\"appalling\",\"unconvincing\",\"unintentional\",\"horrible\",\"amateurish\",\"pathetic\",\"idiotic\",\"stupidity\",\"cardboard\",\"wasted\",\"crap\",\"insulting\",\"tedious\",\"dreadful\",\"dire\",\"badly\",\"suck\",\"worse\",\"terrible\",\"embarrassing\",\"mess\",\"garbage\",\"pile\",\"stupid\",\"ashamed\",\"vampires\",\"worthless\",\"dull\",\"inept\",\"avoid\",\"wooden\",\"forgettable\",\"fulci\",\"crappy\",\"bat\",\"unbelievably\",\"whatsoever\",\"excuse\",\"rubbish\",\"ridiculous\",\"junk\",\"flop\",\"boring\",\"turkey\",\"shark\",\"topless\",\"ridiculously\",\"useless\",\"seed\",\"ripped\",\"embarrassed\",\"rambo\",\"costs\",\"hideous\",\"horrendous\",\"bother\",\"dumb\",\"disjointed\",\"plastic\",\"horribly\",\"fest\",\"ludicrous\",\"unintentionally\",\"obnoxious\",\"mildly\",\"bland\",\"mummy\",\"annoying\",\"amateur\",\"bad\",\"dinosaurs\",\"unless\",\"fails\",\"mediocre\",\"awake\",\"clichd\",\"clich\",\"meaningless\",\"disappointment\",\"zombies\",\"asleep\",\"miscast\",\"irritating\",\"utter\",\"disappointing\",\"screaming\",\"supposed\",\"kidding\",\"poor\",\"apes\",\"unbelievable\",\"fake\",\"dude\",\"dracula\",\"joke\",\"clumsy\",\"random\",\"cheap\",\"idiots\",\"devoid\",\"trite\",\"wannabe\",\"unbearable\",\"alright\",\"pretentious\",\"scooby\",\"sucked\",\"senseless\",\"bo\",\"bin\",\"coherent\",\"idiot\",\"toilet\",\"doo\",\"werewolf\",\"cabin\",\"generous\",\"offensive\",\"monkey\",\"painfully\",\"renting\",\"lazy\",\"disgusting\",\"blame\",\"walked\",\"seconds\",\"generic\",\"cheese\",\"sloppy\",\"huh\",\"retarded\",\"trash\",\"shelf\",\"ugly\",\"oh\",\"slightest\",\"explanation\",\"failed\",\"cringe\",\"blatant\",\"clue\",\"bored\",\"cgi\",\"sat\",\"paid\",\"warn\",\"painful\",\"nowhere\",\"bore\",\"absurd\",\"flies\",\"paint\",\"porn\",\"paper\",\"predictable\",\"pseudo\",\"repetitive\",\"outer\",\"brain\",\"sorry\",\"vampire\",\"motivation\",\"unrealistic\",\"wrestling\",\"overrated\",\"aliens\",\"halfway\",\"save\",\"santa\",\"security\",\"contrived\",\"lacks\",\"whale\",\"gore\",\"bunch\",\"hype\",\"flat\",\"noise\",\"below\",\"plain\",\"spending\",\"bothered\",\"annoyed\",\"sounded\",\"honestly\",\"minutes\",\"wreck\",\"lesbian\",\"chick\",\"dollar\",\"f\",\"secondly\",\"wanna\",\"rat\",\"errors\",\"shallow\",\"synopsis\",\"breasts\",\"gray\",\"yeah\",\"nonsense\",\"unnecessary\",\"swear\",\"grave\",\"ruined\",\"somebody\",\"elvis\",\"mindless\",\"terribly\",\"continuity\",\"hoping\",\"ha\",\"nudity\",\"endless\",\"decent\",\"torture\",\"rented\",\"disaster\",\"downright\",\"ok\",\"fat\",\"unpleasant\",\"figured\",\"rip\",\"throwing\",\"attempt\",\"weak\",\"slap\",\"jesus\",\"christian\",\"barely\",\"apparently\",\"implausible\",\"nothing\",\"clichs\",\"credibility\",\"bible\",\"explained\",\"presumably\",\"celluloid\",\"couldn\",\"money\",\"snake\",\"hollow\",\"load\",\"sake\",\"total\",\"priest\",\"supposedly\",\"consists\",\"zombie\",\"bomb\",\"ape\",\"bottom\",\"christ\",\"unfortunately\",\"bullets\",\"grade\",\"drags\",\"freak\",\"wolf\",\"fx\",\"offended\",\"script\",\"raped\",\"producers\",\"okay\",\"confusing\",\"stomach\",\"monster\",\"seriously\",\"alas\",\"promising\",\"knife\",\"substance\",\"premise\",\"threw\",\"k\",\"dear\",\"z\",\"write\",\"rental\",\"warned\",\"zero\",\"semi\",\"guess\",\"scientist\",\"logic\",\"vague\",\"slasher\",\"throw\",\"accents\",\"alien\",\"silly\",\"clown\",\"skip\",\"instead\",\"blank\",\"throat\",\"lab\",\"par\",\"gag\",\"execution\",\"nose\",\"hated\",\"effort\",\"shoot\",\"fill\",\"gratuitous\",\"burn\",\"none\",\"cameras\",\"assume\",\"stick\",\"reasonable\",\"failure\",\"pie\",\"rent\",\"dubbing\",\"weren\",\"truck\",\"stock\",\"thin\",\"daddy\",\"holy\",\"exercise\",\"pg\",\"arm\",\"tried\",\"suppose\",\"advice\",\"gonna\",\"disbelief\",\"derek\",\"mean\",\"merit\",\"looked\",\"channel\",\"gross\",\"stereotypical\",\"hoped\",\"lacking\",\"spent\",\"stiff\",\"overdone\",\"low\",\"romero\",\"hour\",\"blair\",\"saved\",\"damage\",\"reason\",\"intentions\",\"sentence\",\"hardcore\",\"makeup\",\"lack\",\"makers\",\"empty\",\"holes\",\"wouldn\",\"proof\",\"demon\",\"toys\",\"doll\",\"utterly\",\"originality\",\"bush\",\"saying\",\"cover\",\"meat\",\"forest\",\"deserve\",\"sum\",\"bucks\",\"hills\",\"watchable\",\"lacked\",\"handed\",\"mistake\",\"please\",\"whoever\",\"sadistic\",\"monsters\",\"screenwriter\",\"neither\",\"nuclear\",\"sequels\",\"flesh\",\"lying\",\"creature\",\"annie\",\"propaganda\",\"leonard\",\"thats\",\"racist\",\"convince\",\"asian\",\"why\",\"rex\",\"satan\",\"remake\",\"fail\",\"ah\",\"loser\",\"favor\",\"except\",\"flick\",\"freddy\",\"relies\",\"spare\",\"dialog\",\"lou\",\"dragged\",\"guy\",\"problem\",\"melting\",\"flash\",\"im\",\"least\",\"mouth\",\"sole\",\"hell\",\"jerk\",\"drink\",\"intent\",\"shower\",\"fifteen\",\"wasn\",\"thugs\",\"corpse\",\"virus\",\"idea\",\"budget\",\"minimal\",\"reasonably\",\"naked\",\"rick\",\"category\",\"cheesy\",\"judging\",\"half\",\"pregnant\",\"no\",\"millions\",\"stereotypes\",\"juvenile\",\"weekend\",\"convoluted\",\"laurel\",\"killings\",\"sequel\",\"hire\",\"somewhere\",\"frankly\",\"paying\",\"someone\",\"cant\",\"cash\",\"research\",\"dimensional\",\"walk\",\"editing\",\"conceived\",\"scare\",\"positive\",\"anything\"],\"x1\":{\"__ndarray__\":\"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\",\"dtype\":\"float32\",\"shape\":[1000]},\"x2\":{\"__ndarray__\":\"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\",\"dtype\":\"float32\",\"shape\":[1000]}},\"selected\":{\"id\":\"1234\",\"type\":\"Selection\"},\"selection_policy\":{\"id\":\"1235\",\"type\":\"UnionRenderers\"}},\"id\":\"1207\",\"type\":\"ColumnDataSource\"},{\"attributes\":{\"fill_alpha\":{\"value\":0.1},\"fill_color\":{\"value\":\"#1f77b4\"},\"line_alpha\":{\"value\":0.1},\"line_color\":{\"value\":\"#1f77b4\"},\"size\":{\"units\":\"screen\",\"value\":8},\"x\":{\"field\":\"x1\"},\"y\":{\"field\":\"x2\"}},\"id\":\"1210\",\"type\":\"Scatter\"},{\"attributes\":{\"active_drag\":\"auto\",\"active_inspect\":\"auto\",\"active_multi\":null,\"active_scroll\":\"auto\",\"active_tap\":\"auto\",\"tools\":[{\"id\":\"1198\",\"type\":\"PanTool\"},{\"id\":\"1199\",\"type\":\"WheelZoomTool\"},{\"id\":\"1200\",\"type\":\"ResetTool\"},{\"id\":\"1201\",\"type\":\"SaveTool\"}]},\"id\":\"1202\",\"type\":\"Toolbar\"},{\"attributes\":{\"data_source\":{\"id\":\"1207\",\"type\":\"ColumnDataSource\"},\"glyph\":{\"id\":\"1209\",\"type\":\"Scatter\"},\"hover_glyph\":null,\"muted_glyph\":null,\"nonselection_glyph\":{\"id\":\"1210\",\"type\":\"Scatter\"},\"selection_glyph\":null,\"view\":{\"id\":\"1212\",\"type\":\"CDSView\"}},\"id\":\"1211\",\"type\":\"GlyphRenderer\"},{\"attributes\":{\"callback\":null},\"id\":\"1180\",\"type\":\"DataRange1d\"},{\"attributes\":{\"source\":{\"id\":\"1207\",\"type\":\"ColumnDataSource\"}},\"id\":\"1212\",\"type\":\"CDSView\"},{\"attributes\":{\"callback\":null},\"id\":\"1182\",\"type\":\"DataRange1d\"},{\"attributes\":{},\"id\":\"1184\",\"type\":\"LinearScale\"},{\"attributes\":{},\"id\":\"1186\",\"type\":\"LinearScale\"},{\"attributes\":{},\"id\":\"1230\",\"type\":\"BasicTickFormatter\"},{\"attributes\":{\"formatter\":{\"id\":\"1232\",\"type\":\"BasicTickFormatter\"},\"ticker\":{\"id\":\"1189\",\"type\":\"BasicTicker\"}},\"id\":\"1188\",\"type\":\"LinearAxis\"},{\"attributes\":{},\"id\":\"1232\",\"type\":\"BasicTickFormatter\"},{\"attributes\":{},\"id\":\"1189\",\"type\":\"BasicTicker\"}],\"root_ids\":[\"1177\"]},\"title\":\"Bokeh Application\",\"version\":\"1.4.0\"}};\n",
       "  var render_items = [{\"docid\":\"358f46b8-bc1b-42af-a0ef-19c9c763c306\",\"roots\":{\"1177\":\"3cae9ec1-f49a-49c0-8ac8-91ee02183962\"}}];\n",
       "  root.Bokeh.embed.embed_items_notebook(docs_json, render_items);\n",
       "\n",
       "  }\n",
       "  if (root.Bokeh !== undefined) {\n",
       "    embed_document(root);\n",
       "  } else {\n",
       "    var attempts = 0;\n",
       "    var timer = setInterval(function(root) {\n",
       "      if (root.Bokeh !== undefined) {\n",
       "        clearInterval(timer);\n",
       "        embed_document(root);\n",
       "      } else {\n",
       "        attempts++;\n",
       "        if (attempts > 100) {\n",
       "          clearInterval(timer);\n",
       "          console.log(\"Bokeh: ERROR: Unable to run BokehJS code because BokehJS library is missing\");\n",
       "        }\n",
       "      }\n",
       "    }, 10, root)\n",
       "  }\n",
       "})(window);"
      ],
      "application/vnd.bokehjs_exec.v0+json": ""
     },
     "metadata": {
      "application/vnd.bokehjs_exec.v0+json": {
       "id": "1177"
      }
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "p = figure(tools=\"pan,wheel_zoom,reset,save\",\n",
    "           toolbar_location=\"above\",\n",
    "           title=\"vector T-SNE for most polarized words\")\n",
    "\n",
    "source = ColumnDataSource(data=dict(x1=words_top_ted_tsne[:,0],\n",
    "                                    x2=words_top_ted_tsne[:,1],\n",
    "                                    names=words_to_visualize,\n",
    "                                    color=colors_list))\n",
    "\n",
    "p.scatter(x=\"x1\", y=\"x2\", size=8, source=source, fill_color=\"color\")\n",
    "\n",
    "word_labels = LabelSet(x=\"x1\", y=\"x2\", text=\"names\", y_offset=6,\n",
    "                  text_font_size=\"8pt\", text_color=\"#555555\",\n",
    "                  source=source, text_align='center')\n",
    "p.add_layout(word_labels)\n",
    "\n",
    "show(p)\n",
    "\n",
    "# green indicates positive words, black indicates negative words"
   ]
  }
 ],
 "metadata": {
  "anaconda-cloud": {},
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.7.1"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 1
}
